【发布时间】:2017-07-13 18:40:10
【问题描述】:
这是我第一次发布问题。我对 R 很陌生。我一直在寻找答案,但没有找到答案。所以这里。我有一个非常大的数据集(超过 140K obs),一列包含“程序类型”的类别,选项是:
- 联邦机构
- 联邦机构/大学
- 全国调查计划
- LTER
- 大学
- 非营利机构
- 国家机构
- 国家机构/公民监测计划
- 国家机构/大学/公民监测计划
- 部落机构
我想做的是创建一个新列,在其中将一些类别合并在一起。我想要:
- [联邦机构、联邦机构/大学、国家调查计划]转换为联邦机构/大学
- [LTER, University] 转换为 LTER/大学
- [非营利机构] 转换为非营利机构
- [State Agency] 转换为 State Agency
- [State Agency/Citizen Monitoring Program, State Agency/University/Citizen Monitoring Program] 转换为 Citizen Science Monitoring Program
- [部落机构] 转换为部落机构
其中一些将保持不变。我已经尝试过 ifelse 语句,但似乎很难确定原始列中的内容并返回 NA 以进行大量观察。我检查了我所有的拼写,所以不是这样。这是我根据此处某处的另一个答案所尝试的。我的数据集的名称是 TP_state,其他列中的名称是 lagoslakeid。但是,它无法正常工作。任何帮助将不胜感激!
x <- c(TP_state$programtype)
y <- c(TP_state$lagoslakeid)
df <- data.frame(x,y)
DT <- data.table(df)
DT[, Program_Type := ifelse(x %in% c("Federal Agency", "Federal Agency/University", "National Survey Program"), "Federal Agency/University",
ifelse(x %in% c("LTER", "University"), "LTER/University",
ifelse(x %in% c("Non-Profit Agency"), "Non-Profit Agency",
ifelse(x %in% c("State Agency"), "State Agency",
ifelse(x %in% c("State Agency/University/Citizen Monitoring Program", "State Agency/Citizen Monitoring Program"), "Citizen Monitoring Program",
ifelse(x %in% c("Tribal Agency"), "Tribal Agency", NA))))))]
【问题讨论】:
-
见
fct_collapse来自forcats包。
标签: r