使用 r 计算 data.frame 的多列中的字符出现次数
using r to count character occurrences in multiple columns of data.frame
我是 R 的新手,有一个 data.frame 有 100 列。每列都是字符数据,我试图总结一个字符在每列中出现的次数。我希望能够一次对所有列进行汇总,而不必为每一列键入代码。我试过了
occurrences <- table(unlist(my_df))
但是这个 table 给了我所有列的合并摘要(不是每列的摘要。
当我为一列做一个总结时,我的输出看起来是我想要的,但只针对那一列:
BG_occurrences <- table(unlist(my_df$G))
1 na SOME
17 20 1
有没有一种方法可以同时对每列中的所有数据进行编码和汇总?我希望输出看起来像这样:
1 na SOME
BG: 17 20 1
sBG: 23 10 5
BX: 18 20 0
NG: 21 11 6
我们可以使用 lapply/sapply
遍历列并应用 table
lapply(my_df, table)
或者可以用矢量化的方式来完成
table(c(col(my_df)), unlist(my_df))
或 tidyverse
library(dplyr)
library(tidyr)
my_df %>%
pivot_longer(cols = everything()) %>%
count(name, value)
我是 R 的新手,有一个 data.frame 有 100 列。每列都是字符数据,我试图总结一个字符在每列中出现的次数。我希望能够一次对所有列进行汇总,而不必为每一列键入代码。我试过了
occurrences <- table(unlist(my_df))
但是这个 table 给了我所有列的合并摘要(不是每列的摘要。
当我为一列做一个总结时,我的输出看起来是我想要的,但只针对那一列:
BG_occurrences <- table(unlist(my_df$G))
1 na SOME
17 20 1
有没有一种方法可以同时对每列中的所有数据进行编码和汇总?我希望输出看起来像这样:
1 na SOME
BG: 17 20 1
sBG: 23 10 5
BX: 18 20 0
NG: 21 11 6
我们可以使用 lapply/sapply
遍历列并应用 table
lapply(my_df, table)
或者可以用矢量化的方式来完成
table(c(col(my_df)), unlist(my_df))
或 tidyverse
library(dplyr)
library(tidyr)
my_df %>%
pivot_longer(cols = everything()) %>%
count(name, value)