我有一个含有多列的数据帧,我想要选取其中两列,并且计算唯一值的总数...这是一个例子:
比如说我有一个名为df的数据帧:
df<- data.frame(v1 = c(1, 2, 3, 2, "a"), v2 = c("a", 2 ,"b","b", 4))
df
v1 v2
1 1 a
2 2 2
3 3 b
4 2 b
5 a 4
现在我要做的是从这两列中提取唯一值。如果我只对每列使用unique()函数,输出将如下所示:
> unique(df[,1])
[1] 1 2 3 a
> unique(df[,2])
[1] a 2 b 4
但这样做不太好,因为它只能找到每列的唯一值,而我需要计算两列中所有唯一值的总数!例如,'a'在两列中都重复出现,但是我只想让它被计数一次。对于我所需的示例输出,请想象将列V1和V2放在彼此上方,如下所示: V1_V2
1 1
2 2
3 3
4 2
5 a
6 a
7 2
8 b
9 b
10 4
V1_V2的唯一值将是:
V1_V2
1 1
2 2
3 3
5 a
8 b
10 4
那么我只需使用nrow()函数来计算行数。你有什么想法如何实现这个呢?
unique(unlist(df))
的意思是将数据框df中所有不重复的值提取出来并展平为一个向量。但要注意,当混合不同类型的值时会进行强制转换,因此可能会影响数据的准确性。 - joranunique(c(df[,1],df[,2] ))
- dww