我有一个包含 4 列的数据集,其中包含名称,其中名称的数量和名称的顺序在列之间有所不同。某些列还可以包含相同的名称两次或更多次。看起来如下:
df<- data.frame(x1=c("Ben","Alex","Tim", "Lisa", "MJ","NA", "NA","NA","NA"),
x2=c("Ben","Paul","Tim", "Linda", "Alex", "MJ", "Lisa", "Ken","NA"),
x3=c("Tomas","Alex","Ben", "Paul", "MJ", "Tim", "Ben", "Alex", "Linda"),
x4=c("Ben","Alex","Tim", "Lisa", "MJ", "Ben", "Barbara","NA", "NA"))
现在我必须首先提取数据集中的唯一名称。我使用以下代码做到了这一点:
u<- as.vector(unique(unlist(df)))
其次,我需要找到可以在所有 4 列(A 类名称)、4 列中的 3 列(B 类名称)和 4 列中的 2 列(C 类名称)中找到的名称。
这就是我被困住的地方。我只能使用以下方法提取所有 4 列中包含的名称:
n<- ifelse(u%in%df$x1 & u%in%df$x2 & u%in%df$x3 &
u%in%df$x4", A, B)
因此,例如,Ben 将是 A 类名称,因为它可以在所有 4 列中找到,而 Lisa 将是 B 类名称,因为它只能在 4 列中的 3 列中找到。
Name Class
Ben A
Lisa B
是否有更好的方法根据可以找到的列数对唯一名称进行分类,以及如何对 B 类和 C 类名称进行分类?
提前致谢!