计算频率值并保留所有行 - 多个条件

时间:2018-01-04 19:34:52

标签: r count frequency

考虑到整个数据集,我需要创建一个频率为两个条件(在每一行中定义)的新列。

请注意,我需要添加此信息并将所有行保留在之前的数据集中。

示例:

library(datasets)
mydata<-CO2
names(mydata)
[1] "Plant"     "Type"      "Treatment" "conc"      "uptake"  

假设我想使用变量&#39; Type&#39;和&#39;治疗&#39;作为我的条件。 所以,我需要为每一行计算相应的&#39; Type&#39;和&#39;治疗&#39;出现在整个数据集中。

2 个答案:

答案 0 :(得分:3)

您可以使用ave来计算每个分组对的长度:

mydata$freq <- ave(rep(1, nrow(mydata)), mydata$Type, mydata$Treatment, FUN = length)

head(mydata)
#  Plant   Type  Treatment conc uptake freq
#1   Qn1 Quebec nonchilled   95   16.0   21
#2   Qn1 Quebec nonchilled  175   30.4   21
#3   Qn1 Quebec nonchilled  250   34.8   21
#4   Qn1 Quebec nonchilled  350   37.2   21
#5   Qn1 Quebec nonchilled  500   35.3   21
#6   Qn1 Quebec nonchilled  675   39.2   21

答案 1 :(得分:0)

您可以使用dplyr

轻松完成此操作
library(dplyr)
mydata %>% group_by(Type,Treatment) %>% summarize(count = n())

将导致

# A tibble: 4 x 3
# Groups:   Type [?]
         Type  Treatment count
       <fctr>     <fctr> <int>
1      Quebec nonchilled    21
2      Quebec    chilled    21
3 Mississippi nonchilled    21
4 Mississippi    chilled    21