【发布时间】: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 的答案将名称列表转换为全局环境中的单个变量,但如果您从中删除
list2env和envir=,您将获得一个可以处理的内容列表。从那里开始,使用sapply或lapply函数(或它们的同类),很容易将单个函数或命令序列应用于一个动作中的所有方法。