gpt4 book ai didi

R: Sum Complete.cases in a column 按另一列中的值分组(或排序)

转载 作者:行者123 更新时间:2023-12-04 12:20:04 25 4
gpt4 key购买 nike

我正在使用 R 中可用的 airquality 数据集,并尝试计算数据中不包含任何 NA 的行数,同时通过 Month 进行聚合。

数据如下所示:

head(airquality)
# Ozone Solar.R Wind Temp Month Day
# 1 41 190 7.4 67 5 1
# 2 36 118 8.0 72 5 2
# 3 12 149 12.6 74 5 3
# 4 18 313 11.5 62 5 4
# 5 NA NA 14.3 56 5 5
# 6 28 NA 14.9 66 5 6

如您所见,我在 NAOzone 列中有 Solar.R 。我使用了函数 complete.cases 如下:
x  <- airquality[,1] # for the Ozone
y <- airquality[,2] # for the Solar.R
ok <- complete.cases(x,y)

然后检查:
nrow(airquality)
# [1] 153
sum(!ok)
# [1] 42
sum(ok)
# [1] 111

这很棒。

但是现在,我想将这些数据分开以按 Month (Column5) 排序,这就是我遇到问题的地方 - 在尝试按 column5 ( aggregate ) 中的值对 sortMonth 进行排序时。

我能够让它运行,它不会按 Month 排序(我只是想确保我可以运行该函数):
aggregate(x = sum(complete.cases(airquality)), by= list(nrow(airquality)), FUN = sum)
# Group.1 x
# 1 153 111

好的...所以整理一下。我正在尝试使用聚合函数的 by 部分进行排序。我在 airquality 中尝试了 column5 的许多变体。
- airquality[,5]
- airquality[,"Month"]

我收到这些错误:
aggregate(x = sum(complete.cases(airquality)), by= list(airquality[,5]), FUN = sum)
# Error in aggregate.data.frame(as.data.frame(x), ...) :
# arguments must have same length

aggregate(x = sum(complete.cases(airquality)), by=
list(sum(complete.cases(airquality)),airquality[,5]), FUN = sum)
# Error in aggregate.data.frame(as.data.frame(x), ...) :
# arguments must have same length

我试图进一步搜索 ?aggregate(x, ...) 函数。即在 by 部分...

by - a list of grouping elements, each as long as the variables in the data frame x. The elements are coerced to factors before use.



我查找了 ?factor ,但似乎看不到如何应用它(如果在这种情况下甚至有必要)。我也尝试将 break = 放入其中,但没有用。

“可能已经有了答案的问题”似乎都不适用,其中许多提供了 C# 和 SQL 的解决方案。

编辑:预期结果
Count  Month
24 5
9 6
26 7
23 8
29 9

最佳答案

作为其他答案的补充,您可以使用 dplyr 来完成。

require(dplyr)

airquality %.%
group_by(Month) %.%
summarize(incomplete = sum(!complete.cases(Ozone, Solar.R)),
complete = sum(complete.cases(Ozone, Solar.R)))

# Month incomplete complete
#1 5 7 24
#2 6 21 9
#3 7 5 26
#4 8 8 23
#5 9 1 29

关于R: Sum Complete.cases in a column 按另一列中的值分组(或排序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23634572/

25 4 0