【问题标题】:ddply: Why isn't this working?ddply:为什么这不起作用?
【发布时间】:2016-07-13 18:00:19
【问题描述】:

我是使用 R 的新手,但似乎下面的代码应该可以工作。为什么我没有得到我需要的统计数据?谢谢。

> stats <- ddply(Y, "SECT", summarise, mean.EE = mean(EE), 
+                                      sd.EE = sd(EE),
+                                      mean.AA = mean(AA),
+                                      sd.AA = sd(AA),
+                                      mean.II = mean(II),
+                                      sd.II = sd(II))
> stats
  SECT mean.EE sd.EE mean.AA sd.AA mean.II sd.II
1   H1      NA    NA      NA    NA      NA    NA
2   H2      NA    NA      NA    NA      NA    NA
3   H3      NA    NA      NA    NA      NA    NA
> str(Y)
'data.frame':   537 obs. of  5 variables:
 $ WORD: chr  "a" "a" "a" "a" ...
 $ SECT: chr  "H1" "H1" "H1" "H1" ...
 $ EE  : num  2 2 2 2 2 ...
 $ AA  : num  1.38 1.38 1.38 1.38 1.38 ...
 $ II  : num  1 1 1 1 1 1 1 1 1 1 ...

PS - 我知道看起来每个变量(EE、AA、II)都没有变化,但这只是因为它们是排序的......

【问题讨论】:

  • 尝试将na.rm = TRUE 添加到均值函数中。如果变量中有任何NA,它会将所有内容转换为NA
  • “EE”中是否有任何 NA 值。如果是这种情况,您可以使用na.rm=TRUE
  • 尴尬的是,这就是问题所在。我通过使用 ddply(na.omit(Y)...) 解决了它。 na.rm=TRUE 效率更高吗?

标签: r plyr


【解决方案1】:

也可以尝试使用dplyr

# install.packages('dplyr')
library(dplyr)

meanna <- function(x) mean(x, na.rm = T)
sdna <- function(x) sd(x, na.rm = T)

Y %>%
  group_by(SECT) %>%
  summarise_each(funs(meanna, sdna), -WORD)

【讨论】:

    猜你喜欢
    • 2012-11-17
    • 2023-03-16
    • 2011-10-13
    • 2016-07-06
    • 2011-11-21
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多