更改具有唯一值的多列中的值,然后合并到单列(R)中

时间:2019-03-15 22:27:32

标签: r data-cleaning

假设我有一个数据集(ds),其中包含4行和3个变量,如下所示:

ds
x1  x2  x3
 1   0   0
 0   0   1
 0   1   0
 0   0   1

如何将每列的“ 1”更改为唯一值,然后将它们合并为一个列?

因此,第一步:

x1  x2  x3
 1   0   0
 0   0   3
 0   2   0
 0   0   3

然后,第二步(创建x4):

x1  x2  x3  x4
 1   0   0   1
 0   0   3   3
 0   2   0   2
 0   0   3   3

我有比这更多的变量,我只想知道如何最大程度地减少我写的行数,所以它不像10+行。

1 个答案:

答案 0 :(得分:1)

您可以这样做:

df <- read.table(text="x1  x2  x3
1   0   0
0   0   1
0   1   0
0   0   1", header=TRUE, stringsAsFactors=FALSE)

df <- df*col(df)
df$x4 <- rowSums(df)

  x1 x2 x3 x4
1  1  0  0  1
2  0  0  3  3
3  0  2  0  2
4  0  0  3  3