gpt4 book ai didi

r - 计算所选列值的行数并根据 R 中的计数删除行

转载 作者:行者123 更新时间:2023-12-02 07:01:55 26 4
gpt4 key购买 nike

我是 R 的新手,正在尝试处理来自 csv 文件的数据框(如下面的代码所示)。它有 46 列和 4706 行的医院数据(其中一列是“州”)。我制作了一个表格,显示 State 列中每个值的行数。所以本质上,该表显示了每个州和该州的医院数量。现在我想要做的是对数据框进行子集化,并创建一个新的数据框,而不包含该州少于 20 家医院的条目。

如何计算“州”列中值的出现次数,然后删除那些计数小于 20 的值?也许我应该使用 table() 函数,删除不需要的数据并使用 lappy() 之类的东西将其放入新的数据框中,但由于我缺乏 R 编程经验,我不确定。

任何帮助将不胜感激。我在本网站上看到过其他删除具有特定列值的行的示例,但没有看到根据特定列值的计数删除行的示例。

> outcome <- read.csv("outcome-of-care-measures.csv", colClasses = "character")    
> hospital_nos <- table(outcome$State)
> hospital_nos

AK AL AR AZ CA CO CT DC DE FL GA GU HI IA ID IL IN KS KY LA MA MD ME MI
17 98 77 77 341 72 32 8 6 180 132 1 19 109 30 179 124 118 96 114 68 45 37 134
MN MO MS MT NC ND NE NH NJ NM NV NY OH OK OR PA PR RI SC SD TN TX UT VA
133 108 83 54 112 36 90 26 65 40 28 185 170 126 59 175 51 12 63 48 116 370 42 87
VI VT WA WI WV WY
2 15 88 125 54 29

最佳答案

这是一种方法。从以下数据框开始:

df <- data.frame(x=c(1:10), y=c("a","a","a","b","b","b","c","d","d","e"))

如果你只想保留 df$y 中出现次数超过 2 次的行,你可以这样做:

tab <- table(df$y)
df[df$y %in% names(tab)[tab>2],]

给出:

  x y
1 1 a
2 2 a
3 3 a
4 4 b
5 5 b
6 6 b

这是使用 plyr 包的单行解决方案:

ddply(df, "y", function(d) {if(nrow(d)>2) d else NULL})

关于r - 计算所选列值的行数并根据 R 中的计数删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19412337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com