使用R快速计算子集

时间:2018-04-26 10:28:15

标签: r subset

并提前感谢所有人。

我有以下数据:

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?

致以最诚挚的问候,

1 个答案:

答案 0 :(得分:3)

我们可以prop.tabletable一起使用来获得比例

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))