【发布时间】:2018-04-11 16:30:28
【问题描述】:
我正在使用一个数据集,其中给定国家/地区的答案编码方式存在错误。让我们调用我的第一个变量my.data$country_year 和第二个变量my.data$attitude。两者的表格给出以下输出:
table(my.data$country_year, my.data$attitude)
(1) Very Suitable (2) Suitable (3) Somewhat Suitable (4) Not Suitable
Yemen.2006 101 142 1192 0
Lebanon.2007 13 14 60 1063
Yemen.2007 49 113 122 248
Palestine.2008 131 653 387 2093
有问题的表格有很多国家,我在这个例子中省略了。我想做的是让 R 在我的原始数据集中执行以下操作,同时保留所有其他国家的观察结果:
for my.data$country="Yemen.2006" & my.data$attitude="(3) 有点适合", "(4) 不适合。
for my.data$country="Yemen.2006" & my.data$attitude="(2) 适合", "(3) 有点适合"
换句话说,我想将 2006 年在也门进行的调查的态度变量的第二个和第三个值向右移动,而不创建新变量。我希望结果如下
(1) Very Suitable (2) Suitable (3) Somewhat Suitable (4) Not Suitable
Yemen.2006 101 0 142 1192
Lebanon.2007 13 14 60 1063
Yemen.2007 49 113 122 248
Palestine.2008 131 653 387 2093
【问题讨论】:
-
如果您指定
tbl <- table(.),只需执行tbl[1, 2:4] <- tbl[1, c(4, 2, 3)]。 -
您是否尝试过
within(mydata, { attitude[country=="Yemen.2007" & attitude=="(3)"] <- "(4)" }),其他国家/地区也类似? (确保在 2 到 3 之前移动 3 到 4,否则你将失去所有 2。) -
Rui,您好,您提出的建议有效,但仅适用于一张桌子。根据我的示例,我想根据因子变量 country=Yemen 2006 对因子变量的态度重新排序。你知道用数据集做你建议的方法吗?
-
您好 r2evans,您的解决方案正确地解决了我的问题的逻辑,但输入时 R 不接受它。它吐出如下错误:
[<-.data.frame(*tmp*, nl, value = list(attitude= c(NA, NA, : duplicate subscripts for columns)
标签: r variables dataset recode