如何获取列中每个值的计数?
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 <-
。【参考方案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
【讨论】:
以上是关于如何获取列中每个值的计数?的主要内容,如果未能解决你的问题,请参考以下文章