【发布时间】:2020-12-13 23:59:52
【问题描述】:
我有许多大型数据框,其中偶尔包含字符串值,我想知道唯一的字符串值是什么(忽略数值),如果可能的话,计算这些字符串。
df <- data.frame(1:16)
df$A <- c("Name",0,0,0,0,0,12,12,0,14,NA_real_,14,NA_real_,NA_real_,16,16)
df$B <- c(10,0,"test",0,12,12,12,12,0,14,NA_real_,14,16,16,16,16)
df$C <- c(10,12,14,16,10,12,14,16,10,12,14,16,10,12,14,16)
X1.16 A B C
1 1 Name 10 10
2 2 0 0 12
3 3 0 test 14
4 4 0 0 16
5 5 0 12 10
6 6 0 12 12
7 7 12 12 14
8 8 12 12 16
9 9 0 0 10
10 10 14 14 12
11 11 <NA> <NA> 14
12 12 14 14 16
13 13 <NA> 16 10
14 14 <NA> 16 12
15 15 16 16 14
16 16 16 16 16
我知道我可以在 dplyr 中使用 count 函数,但我有太多唯一数值,所以这不是一个很好的解决方案。在下面的代码中,我能够过滤我的数据,以便只保留包含字母字符的行(尽管这也不是解决方案)。
df %>% filter_all(any_vars(str_detect(., pattern = "[:alpha:]")))
X1.16 A B C
1 1 Name 10 10
2 3 0 test 14
我想要的输出是这样的:
Variable n
"Name" 1
"test" 1
【问题讨论】: