假设我有一个数据集(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+行。
答案 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