如何获取列中每个值的计数?

Posted

技术标签:

【中文标题】如何获取列中每个值的计数?【英文标题】: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"))

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

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

【问题讨论】:

【参考方案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

【讨论】:

以上是关于如何获取列中每个值的计数?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Linq 获取列中每个不同值的计数

获取bash中列中唯一值的计数

如何从另一个表中获取每个值的计数?

如何获取列中多个最小值的索引?

mysql查询以获取列中每个元素的计数

如何获取仅分配给一个值而没有其他值的唯一 ID 的计数?