首页 > 解决方案 > 更改具有唯一值的多列中的值并合并为单列 (R)

问题描述

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

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+ 行。

标签: rdata-cleaning

解决方案


你可以这样做:

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

推荐阅读