对于以下数据集,我们如何计算表中值的出现? 例如,我想计算单个代码中以下数据集中U,X,Y,Z的发生次数。
预期输出低于数据集。
U 15
X 08
Y 07
Z 03
h1 h2 h3 h4 h5 h6 h7 h8
U U NULL U Y NULL Y X
U NULL U U Y Y X X
U U U NULL U NULL Y NULL
NULL NULL NULL NULL NULL NULL NULL NULL
X V U U Y NULL Z X
Y X NULL X Y Z U
X NULL U NULL NULL U Z Y
NULL NULL NULL NULL NULL NULL NULL NULL
答案 0 :(得分:0)
假设df
是您的数据框。计算出现次数的一种简单方法是:sum(df == X, na.rm = TRUE)
。
要获得所有计数,需要以下代码:
values <- c("U","V","X","Y","Z")
sapply(values,function(x,y){sum(y == x, na.rm = TRUE)},data )
和输出:
> sapply(values,function(x,y){sum(y == x, na.rm = TRUE)},data )
U V X Y Z
15 1 8 9 3
>
答案 1 :(得分:0)
这是一种使用tidyr
的方法,在向数据的第6行添加NULL之后,因为它只有7列。请注意,原始数据有9个Y,而不是OP中总结的7个,以及1 V.
rawData <- "h1 h2 h3 h4 h5 h6 h7 h8
U U NULL U Y NULL Y X
U NULL U U Y Y X X
U U U NULL U NULL Y NULL
NULL NULL NULL NULL NULL NULL NULL NULL
X V U U Y NULL Z X
Y X NULL NULL X Y Z U
X NULL U NULL NULL U Z Y
NULL NULL NULL NULL NULL NULL NULL NULL"
data <- read.table(text=rawData,stringsAsFactors=FALSE,
header=TRUE,na.strings="NULL")
library(tidyr)
tidyData <- gather(data,key="variable",na.rm=TRUE)
table(tidyData$value)
...和输出:
> table(tidyData$value)
U V X Y Z
15 1 8 9 3
>
使用dplyr
和tidyr
,解决方案如下所示。
library(dplyr)
gather(data,key="variable",na.rm=TRUE) %>%
group_by(value) %>% summarise(n= n())
...和输出:
> gather(data,key="variable",na.rm=TRUE) %>%
+ group_by(value) %>% summarise(n= n())
# A tibble: 5 x 2
value n
<chr> <int>
1 U 15
2 V 1
3 X 8
4 Y 9
5 Z 3
>