对于下面的数据集,我想要在给定列下的高,高于正常,正常的计数
我想要这样的输出
发布于 2018-12-19 22:59:38
试试这个:
首先创建一个与您的数据集相似的虚拟数据集:
library(dplyr)
dat <- tibble::tribble(
~AL.01, ~AL.02, ~AL.03,
"Above Normal", "Above Normal", "Normal",
"Normal", "Normal", "Normal",
"Normal", "Normal", "Normal",
"Normal", "Normal", "Normal",
"Normal", "Normal", "Normal",
"Normal", "Normal", "Normal",
"Normal", "Normal", "Normal",
"Normal", "Normal", "Normal",
"Normal", "Normal", "Normal",
"Normal", "Normal", "Normal",
"Normal", "Normal", "Normal",
"Normal", "Normal", "Normal",
"Normal", "Normal", "High",
"Normal", "Normal", "High",
"Normal", "Normal", "Above Normal",
"Normal", "Normal", "Normal",
"Normal", "Normal", "Normal",
"Above Normal", "High", "Above Normal",
"Above Normal", "Normal", "Above Normal",
"Normal", "Normal", "Normal",
"Normal", "Normal", "Normal",
"Normal", "Normal", "Normal",
"High", "Normal", "Normal"
)
现在执行以下计数和重命名操作:
AL.01 <- dat %>%
count(AL.01) %>%
rename(metric = AL.01, AL.01 = n)
AL.02 <- dat %>%
count(AL.02) %>%
rename(metric = AL.02, AL.02 = n)
AL.03 <- dat %>%
count(AL.03) %>%
rename(metric = AL.03, AL.03 = n)
final <- full_join(AL.01, AL.02) %>% full_join(AL.03)
final
data.frame final
应如下所示:
# A tibble: 3 x 4
metric AL.01 AL.02 AL.03
<chr> <int> <int> <int>
1 Above Normal 3 1 3
2 High 1 1 2
3 Normal 19 21 18
发布于 2018-12-19 23:01:22
使用base R,您可以执行以下代码:
#mock up data
my_df <- data.frame(AL_01 = c("Above No", "Normal", "Normal", "High", "Above No", "Normal", "Normal", "High"),
AL_02 = c("Above No", "Normal", "Normal", "Normal", "Above No", "Normal", "Normal", "High"),
AL_03 = c("Normal", "Normal", "Normal", "High","Above No", "Normal", "Normal", "High" ))
apply(my_df, 2, table)
让步:
AL_01 AL_02 AL_03
Above No 2 2 1
High 2 1 2
Normal 4 5 5
table
命令计算向量中不同条目的数量。这是在apply
函数中调用的。这样,将为每一列执行table
命令(因为第二个参数== 2)并返回该命令。在命令提示符下键入?table
和?apply
以获取更多信息。
https://stackoverflow.com/questions/53853448
复制相似问题