抱歉,是否已经有人问过这个问题。我是R的新手。
我目前有一个带有1列的数据框。我正在尝试使用我拥有的不同整数来构建此数据框。
Apeaks
1
6
5
我有以下整数
Bpeaks = 2 1 6 12 10 5 8
Cpeaks = 2 1
Dpeaks = 4 1 0 9 20 4 18 11 9 6
我试图将整数(整数列表?)Bpeaks添加到数据框Apeaks作为列。同时,“峰值”列将只有3个值,而“峰值”列将只有7个值。我正在尝试将Apeaks的每一行的值0分配为Bpeaks的额外行数。
这就是我希望得到的结果
Apeaks Bpeaks
1 2
6 1
5 6
0 12
0 10
0 5
0 8
另外,当我添加一列较短的值时,行将自动分配为0。例如
Cpeaks = 2 1
Apeaks Bpeaks Cpeaks
1 2 2
6 1 1
5 6 0
0 12 0
0 10 0
0 5 0
0 8 0
当我添加另一列较长的列时,所有现有列的每个额外行的值都为0。例如
Dpeaks = 4 1 0 9 20 4 18 11 9 6
Apeaks Bpeaks Cpeaks Dpeaks
1 2 2 4
6 1 1 1
5 6 0 0
0 12 0 9
0 10 0 20
0 5 0 4
0 8 0 18
0 0 0 11
0 0 0 9
0 0 0 6
有没有办法做到这一点(代码会很有帮助)?感谢帮助!
您可以使用此功能添加新列:
add_Data <- function(df, vec) {
colname <- deparse(substitute(vec))
new_row <- max(nrow(df), length(vec))
new_df <- df[1:new_row, ,drop = FALSE]
new_df[colname] <- c(vec, rep(NA, new_row - length(vec)))
new_df[is.na(new_df)] <- 0
rownames(new_df) <- NULL
new_df
}
Bpeaks = c(2, 1, 6, 12, 10, 5, 8)
Cpeaks = c(2, 1)
Dpeaks = c(4, 1, 0, 9, 20, 4, 18, 11, 9, 6)
df <- add_Data(df, Bpeaks)
df
# Apeaks Bpeaks
#1 1 2
#2 6 1
#3 5 6
#4 0 12
#5 0 10
#6 0 5
#7 0 8
新增中 Cpeaks
df <- add_Data(df, Cpeaks)
df
# Apeaks Bpeaks Cpeaks
#1 1 2 2
#2 6 1 1
#3 5 6 0
#4 0 12 0
#5 0 10 0
#6 0 5 0
#7 0 8 0
新增Dpeaks
:
df <- add_Data(df, Dpeaks)
df
# Apeaks Bpeaks Cpeaks Dpeaks
#1 1 2 2 4
#2 6 1 1 1
#3 5 6 0 0
#4 0 12 0 9
#5 0 10 0 20
#6 0 5 0 4
#7 0 8 0 18
#8 0 0 0 11
#9 0 0 0 9
#10 0 0 0 6
数据
我们从以下数据帧开始:
df <- structure(list(Apeaks = c(1L, 6L, 5L)), class = "data.frame",
row.names = c(NA, -3L))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句