【问题标题】:Making quick calculations on subsets with R使用 R 对子集进行快速计算
【发布时间】:2018-04-26 10:28:15
【问题描述】:

在此先感谢大家。

我有以下数据:

set.seed(123)

    data <- data.frame (name=LETTERS[sample(1:26, 500, replace=T)],present=sample(0:1,500,replace = T))

我想快速计算每个字母的当前观察值(1)的百分比。我可以手动完成,但我相信有一种更简单的方法:

library(dplyr)
A <- filter(data, name=="A" & present==1)
A2 <- filter(data, name=="A")
data$Percentage[data$name=="A"] <- nrow(A)/nrow(A2)

以此类推,直到我到达“Z”。

我可以自动完成此任务而无需手动更改“名称”列的值吗?

最好的问候,

【问题讨论】:

  • 您可能需要prop.table(table(data))[,1]

标签: r subset


【解决方案1】:

我们可以用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)) 

【讨论】:

  • pt &lt;- prop.table(table(data), 1)[,2]; data$pt &lt;- pt[data$name]
猜你喜欢
  • 2020-03-21
  • 1970-01-01
  • 2022-01-21
  • 2019-01-26
  • 2014-02-21
  • 2016-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多