替换R中的列值
示例df:替换R中的列值,r,R,示例df: index name V1 V2 etc 1 x 2 1 2 y 1 2 3 z 3 4 4 w 4 3 我想用特定索引值的名称列中的相关值替换V1和V2列中的值。输出应如下所示: index name V1 V2 etc 1 x y x 2 y
index name V1 V2 etc
1 x 2 1
2 y 1 2
3 z 3 4
4 w 4 3
我想用特定索引值的名称列中的相关值替换V1和V2列中的值。输出应如下所示:
index name V1 V2 etc
1 x y x
2 y x y
3 z z w
4 w w z
我在循环中尝试了多个merge语句,但不确定如何替换值,而不是创建新列,并且还出现了重复名称错误
V<-2 # number of V columns
names<-c()
for (i in 1:k){names[[i]]<-paste0('V',i)}
lookup_table<-df[,c('index','name'),drop=FALSE] # it's at unique index level
for(col in names){
df<- merge(df,lookup_table,by.x=col,by.y="index",all.x = TRUE)
}
V我们能做什么
df[3:4] <- lapply(df[3:4], function(x) df$name[x])
df[3:4]我们可以做
df[3:4] <- lapply(df[3:4], function(x) df$name[x])
df[3:4]不错!我也试过拉普拉,但没有你那么简单。谢谢!即使我不知道他们的顺序或数量,我怎么能使用这个列呢?我知道它们将以V+number开头。@JohnSnow,在这种情况下,你可以做得很好!我也试过拉普拉,但没有你那么简单。谢谢!即使我不知道他们的顺序或数量,我怎么能使用这个列呢?我知道它们将以V+number开头。@JohnSnow,在这种情况下,您可以执行i1
df <- structure(list(index = 1:4, name = c("x", "y", "z", "w"), V1 = c(2L,
1L, 3L, 4L), V2 = c(1L, 2L, 4L, 3L)), .Names = c("index", "name",
"V1", "V2"), class = "data.frame", row.names = c(NA, -4L))