【问题标题】:How to get counts of each value in a column?如何获取列中每个值的计数?
【发布时间】:2019-09-25 18:56:46
【问题描述】:

我有一个包含比这更多列的大型数据集,但为了这个问题,我将对其进行简化。

种族 |问题ID |响应ID

我想使用 R 来查找特定种族的特定问题的答案计数。即 Ethnicity=="Asian", QuestionID==10, ResponseID==2

我该怎么做呢?

我尝试使用 plyr 库,代码如下:

library(plyr)

visData <- read.csv(file="/Users/gtye/Documents/Big Data/Medicare_claims___Vision_and_Eye_Health_Surveillance.csv"), header=TRUE, sep=",")

count(visData, c("RaceEthnicityID", "QuestionID", "ResponseID"))

但我得到的只是这个,这并不是我想要的。

在你激怒我之前,我已经看了好几个小时了,我只是个菜鸟,不知道该搜索什么。请帮忙:(

【问题讨论】:

    标签: r bigdata plyr


    【解决方案1】:

    这样的事情应该可以工作:

    library(tidyverse)
    
    visData <- visData %>%
      group_by(raceEthnicityID, QuestionID, ResponseID) %>%
      summarize(response_count = n())
    

    【讨论】:

    • 首先,非常感谢 James 的友好回复。大约 3 年前,我尝试学习 R,但后来放弃了,因为每当我在这里提出问题时都会被激怒。
    • 其次,我输入了你写的内容,结果如下:Error: Column `ResponseID` must be length 1 (a summary value), not 1622
    • 我试过这个并没有得到任何输出,见这里:i.imgur.com/7XAwiH3.png
    • 感谢您将我引向 tidyverse,不过,看起来它是一个非常有用的软件包!
    • 你没有得到输出,因为它被分配给了一个新对象。如果您只想将其打印到控制台,请删除 visData &lt;-
    【解决方案2】:

    我认为这会对您有所帮助,并且应该可以正常运行

    require(dplyr) ## Same as library
    
    visData_subset <- visData %>% 
                        group_by(raceEthnicityID, QuestionID, ResponseID) %>% 
                        filter(raceEthnicityID=="Asian", QuestionID==10, 
                               ResponseID == 2) %>% 
                        summarize(response_count = n())
    

    【讨论】:

      【解决方案3】:

      这里我以“mtcars”数据框为例,因为您没有提供数据:

      假设 mtcars 我喜欢计算 cyl 等于 4 且 mpg 小于 25 的行。

      df = mtcars   
      nrow(df[which(df$cyl == 4 & df$mpg< 25), ])
      # [1] 5
      

      【讨论】:

        猜你喜欢
        • 2011-10-26
        • 2021-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多