【发布时间】:2019-05-08 15:05:26
【问题描述】:
我有一个包含三列的数据框。这些列上有许多缺失值。我想创建一个新的唯一 ID 列,它为每一行提供相同的 id,在三列之一中至少有一个相同的值。
数据框是这样的
df=data.frame(id1=c(5,5,NA,NA,NA,5,4,NA,NA),
id2=c(NA,58,58,58,NA,58,NA,66,66),
id3=c(NA,NA,NA,581,581,581,NA,669,NA))
df
id1 id2 id3
1 5 NA NA
2 5 58 NA
3 NA 58 NA
4 NA 58 581
5 NA NA 581
6 5 58 581
7 4 NA NA
8 NA 66 669
9 NA 66 NA
新列应该是这样的
df=data.frame(id1=c(5,5,NA,NA,NA,5,4,NA,NA),
id2=c(NA,58,58,58,NA,58,NA,66,66),
id3=c(NA,NA,NA,581,581,581,NA,669,NA),
ID=c(1,1,1,1,1,1,2,3,3))
id1 id2 id3 ID
1 5 NA NA 1
2 5 58 NA 1
3 NA 58 NA 1
4 NA 58 581 1
5 NA NA 581 1
6 5 58 581 1
7 4 NA NA 2
8 NA 66 669 3
9 NA 66 NA 3
【问题讨论】:
-
如果 id2 的 '58' 在第 9 行,那么它的 id 是什么
-
在您的示例数据中,这看起来非常简单,每个
ID对应于每个id1、id2和id3中的一个值。真的是这样吗?如果有另一行有5对应id1和66对应id2,您是否要将所有ID3 和1 折叠到一个组中? -
@akrun:如果第 9 行的 id2 为 '58',则 ID 应为 1。
-
@Gregor:实际上每个 ID 对应于 id1、id2 和 id3 中的单个值。一行的 id1 不可能是 5,而 id2 是 66。
标签: r