如何根据来自另一列的数值序列动态地在数据中添加列?我希望根据来自另一列的值将n
列添加到dataframe中。我有什么,我想要什么
我有这个:
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
列的dataframe,并且每个列都有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
值的列,并且必须按照这里所做的那样添加列。我该怎么做?
发布于 2018-03-05 13:44:34
我们可以在行序列的“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
https://stackoverflow.com/questions/49111791
复制相似问题