并提前感谢所有人。
我有以下数据:
set.seed(123)
data <- data.frame (name=LETTERS[sample(1:26, 500, replace=T)],present=sample(0:1,500,replace = T))
我想快速计算每个字母的现有观察百分比(1&#39; s)。我可以手动完成,但我相信有一种更简单的方法:
library(dplyr)
A <- filter(data, name=="A" & present==1)
A2 <- filter(data, name=="A")
data$Percentage[data$name=="A"] <- nrow(A)/nrow(A2)
依此类推,直到我到达&#34; Z&#34;。
我是否可以自动完成此任务,而无需更改&#34; name&#34;的值。 colum manual?
致以最诚挚的问候,
答案 0 :(得分:3)
我们可以prop.table
与table
一起使用来获得比例
prop.table(table(data), 1)[,2]
要将其添加为列,我们可以通过匹配“名称”
来扩展它data$Percentage <- prop.table(table(data), 1)[,2][as.character(data$name)]
或者@Lars Lau Raket建议,我们无需转换为character
prop.table(table(data), 1)[,2][data$name]
如果我们需要创建一个列
library(dplyr)
data %>%
group_by(name) %>%
mutate(Percentage = mean(present==1))