【问题标题】:Is there a way to take multiple means and store them in a vector in R有没有办法采取多种方式并将它们存储在R中的向量中
【发布时间】:2020-05-14 09:17:16
【问题描述】:

我想要一个更简单的方法来做这件事

MEAN1 = mean(CIS2017$USHRWK[CIS2017$AGE == 1 | CIS2017$ALFST == 1], na.rm = TRUE)  
MEAN2 = mean(CIS2017$USHRWK[CIS2017$AGE == 2 | CIS2017$ALFST == 1], na.rm = TRUE)  
MEAN3 = mean(CIS2017$USHRWK[CIS2017$AGE == 3 | CIS2017$ALFST == 1], na.rm = TRUE)  
MEAN4 = mean(CIS2017$USHRWK[CIS2017$AGE == 4 | CIS2017$ALFST == 1], na.rm = TRUE)  
MEAN5 = mean(CIS2017$USHRWK[CIS2017$AGE == 5 | CIS2017$ALFST == 1], na.rm = TRUE)  
MEAN6 = mean(CIS2017$USHRWK[CIS2017$AGE == 6 | CIS2017$ALFST == 1], na.rm = TRUE)  
MEAN7 = mean(CIS2017$USHRWK[CIS2017$AGE == 7 | CIS2017$ALFST == 1], na.rm = TRUE)  
MEAN8 = mean(CIS2017$USHRWK[CIS2017$AGE == 8 | CIS2017$ALFST == 1], na.rm = TRUE)  
MEAN9 = mean(CIS2017$USHRWK[CIS2017$AGE == 9 | CIS2017$ALFST == 1], na.rm = TRUE)  

执行以下操作似乎不起作用

AGE_GROUPS = seq(1, 16, 1)  
MEAN = mean(CIS2017$USHRWK[CIS2017$AGE == AGE_GROUPS | CIS2017$ALFSTN == 1], na.rm = TRUE)

【问题讨论】:

  • See here 提出一个人们可以帮助解决的 R 问题。这包括一个数据样本,以便我们可以运行您的代码
  • 试试sapply(AGE_GROUPS, function(x) mean(CIS2017$USHRWK[CIS2017$AGE == x | CIS2017$ALFST == 1], na.rm = TRUE))
  • Matt,作为“最佳实践”,将平均值存储在命名列表或命名向量中而不是单个变量中可能更有用。例如,ThomasIsCoding 的答案将名称列表转换为全局环境中的单个变量,但如果您从中删除 list2envenvir=,您将获得一个可以处理的内容列表。从那里开始,使用sapplylapply 函数(或它们的同类),很容易将单个函数或命令序列应用于一个动作中的所有方法。

标签: r subset mean


【解决方案1】:

也许这就是你所追求的

list2env(setNames(
  lapply(AGE_GROUPS,
       function(k) mean(CIS2017$USHRWK[CIS2017$AGE == k | CIS2017$ALFSTN == 1], na.rm = TRUE)),
  paste("MEAN",AGE_GROUPS)),envir = .GlobalEnv)

v <- setNames(
  sapply(AGE_GROUPS,
       function(k) mean(CIS2017$USHRWK[CIS2017$AGE == k | CIS2017$ALFSTN == 1], na.rm = TRUE)),
  paste("MEAN",AGE_GROUPS))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-12
    • 2022-06-11
    • 2020-04-24
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 2021-04-23
    相关资源
    最近更新 更多