我刚刚创建了一个样本,它提供了我的数据结构:
a<-c(1,2,3,4,5,6,7,8,9,10,1,2,3,4,2,3,5,4,5,6)
b<-c(1,2,3,4,4,1,2,3,9,7,2,3,6,1,9,3,1,5,7,8)
c<-c(1,1,1,0,0,1,0,1,0,0,0,0,0,1,1,1,1,0,1,0)
d<-c(10,9,7,10,11,2,3,3,1,1,2,2,2,2,2,2,2,2,2,3)
e<-c(1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5)
df<-data.frame(a,b,c,d,e)
library(memisc)
df_p1<- within(df,{
e<-recode(e,
c(1,2,3)->"West",
c(4,5)->"East")})
我只想将1,2,3行重新编码为West,将4,5行重新编码为East。我肯定知道我在一周前运行了这个recode命令并且它工作得很好。现在我收到了错误。
Error in `[<-.data.frame`(`*tmp*`, nl, value = list(East = c(4, 5), West = c(1, :
replacement element 2 has 3 rows, need 20
In addition: Warning message:
In if (as.factor.result) { :
the condition has length > 1 and only the first element will be used
我刚才发现了问题。我不知道这是否是常识,但我不知道。只有当我将库(car)添加到我的脚本时才会出现此问题。我想使用库(memisc)和库(car)可能会出现一些问题。使用它们,您将收到错误消息。
答案 0 :(得分:1)
如何稍微修改它? 使用汽车库而不是memisc
require(car)
df_p1<- within(df,{
e<-recode(e, "c(1,2,3)='West'; c(4,5)='East'")})