R 用列名替换列条目
我想用其列名替换data.table或data.frame中的值(即“x”) 例如:R 用列名替换列条目,r,dataframe,replace,data.table,R,Dataframe,Replace,Data.table,我想用其列名替换data.table或data.frame中的值(即“x”) 例如: # sample data Substance <- LETTERS[1:10] Jan10 <- c("x","x",NA,NA,NA,"x","x","x","x",NA) Apr10 <- c("x",NA,"x",NA,"x","x","x","x",NA,"x") Jul10 <- c(NA,NA,NA,"x","x","x","x",NA,"x","x") Oct10 <
# sample data
Substance <- LETTERS[1:10]
Jan10 <- c("x","x",NA,NA,NA,"x","x","x","x",NA)
Apr10 <- c("x",NA,"x",NA,"x","x","x","x",NA,"x")
Jul10 <- c(NA,NA,NA,"x","x","x","x",NA,"x","x")
Oct10 <- c("x","x","x","x",NA,"x",NA,"x",NA,"x")
dt <- as.data.table(cbind(Substance, Jan10, Apr10, Jul10, Oct10))
# manually changing one column
dt[Jan10=="x", Jan10 := "Jan10"]
#示例数据
Substance我们在列上循环,使用set
将NA值替换为列名
for(j in 2:ncol(dt)){
set(dt, i=which(dt[[j]]=="x"), j=j, value = names(dt)[j])
}
dt
# Substance Jan10 Apr10 Jul10 Oct10
# 1: A Jan10 Apr10 NA Oct10
# 2: B Jan10 NA NA Oct10
# 3: C NA Apr10 NA Oct10
# 4: D NA NA Jul10 Oct10
# 5: E NA Apr10 Jul10 NA
# 6: F Jan10 Apr10 Jul10 Oct10
# 7: G Jan10 Apr10 Jul10 NA
# 8: H Jan10 Apr10 NA Oct10
# 9: I Jan10 NA Jul10 NA
#10: J NA Apr10 Jul10 Oct10
如果你有一个data.frame
并且列不是因子,你可以做indx,我确实有因子。它起作用了。如下所示,这个想法是要替换“x”,而不是NAs。因此,如果您计划在将来更改这些值,最好不要使用因子(或cbind
),将is.na(df)
更改为df==“x”
)。我读了你的数据如下dfsry,想写字符而不是因子。很好。谢谢你的快速回复。它起作用了。然而,我们的想法是更改“x”条目,而不是NAs。我相应地改变了它!