如何根据另一列的数值序列在数据框中动态添加列?我想根据另一列的值将n
列添加到数据框中。我有什么,我想拥有什么:
我有这个:
head(df)
x y
[1] 1 ola
[2] 2 ola
[3] 3 ola
[4] 5 ola
[5] 4 ola
[6] 2 ola
[7] 3 ola
[8] 1 ola
[9] 5 ola
[10] 4 ola
[11] 2 ola
[12] 3 ola
[13] 5 ola
[14] 4 ola
[15] 1 ola
[16] 2 ola
[17] 3 ola
[18] 5 ola
[19] 4 ola
[20] 1 ola
[21] 3 ola
[22] 5 ola
[23] 2 ola
[24] 1 ola
[25] 4 ola
[26] 2 ola
在我的情况下,我有一个包含18
列的数据框,每列有3305708
行。那么,我想做什么?我想根据列值x
动态添加列。也就是说,在这种情况下,请添加值5
和0
的更多1
列。像这样:
head(df)
x y x_1 x_2 x_3 ...
[1] 1 ola 1 0 0 ...
[2] 2 ola 0 1 0 ...
[3] 3 ola 0 0 1 ...
[4] 5 ola 0 0 0 ...
[5] 4 ola 0 0 0 ...
[6] 2 ola 0 1 0 ...
[7] 5 ola 0 0 0 ...
[8] 1 ola 1 0 0 ...
[9] 5 ola 0 0 0 ...
[10] 4 ola 0 0 0 ...
[11] 2 ola 0 1 0 ...
[12] 3 ola 0 0 1 ...
[13] 5 ola 0 0 0 ...
[14] 4 ola 0 0 0 ...
[15] 1 ola 1 0 0 ...
[16] 2 ola 0 1 0 ...
[17] 3 ola 0 0 1 ...
[18] 5 ola 0 0 0 ...
[19] 4 ola 0 0 0 ...
[20] 1 ola 1 0 0 ...
[21] 3 ola 0 0 1 ...
[22] 5 ola 0 0 0 ...
[23] 2 ola 0 1 0 ...
[24] 1 ola 1 0 0 ...
[25] 4 ola 0 0 0 ...
[26] 2 ola 0 1 0 ...
我该如何动态执行此操作?在这种情况下,我只有5
个值,但在我的情况下,我的列有45
个值,我必须像在此处一样添加列。我怎么能这样做?
答案 0 :(得分:1)
我们可以在'x'列上使用table
,使用行序列,cbind
使用原始数据集
res <- cbind(df, as.data.frame.matrix(table(seq_len(nrow(df)), df$x)))
names(res) <- tolower(make.names(names(res)))
res
# x y x1 x2 x3 x4 x5
#1 1 ola 1 0 0 0 0
#2 2 ola 0 1 0 0 0
#3 3 ola 0 0 1 0 0
#4 5 ola 0 0 0 0 1
#5 4 ola 0 0 0 1 0
#6 2 ola 0 1 0 0 0