【发布时间】:2017-04-08 18:33:40
【问题描述】:
我想用它的列名替换 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 <- 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"]
目标:所有列应与更改后的 Jan10 列相似。如何用相应的列名替换每列中的“x”值?感谢您的任何建议。
【问题讨论】:
-
如果你有一个
data.frame并且列不是因素,你可以做indx <- which(is.na(df), arr.ind = TRUE) ; df[indx] <- names(df)[indx[, "col"]] -
确实我有因素。有用。如下所示,这个想法是替换“x”,而不是 NA。
-
因此将
is.na(df)更改为df == "x",如果您打算将来更改值,最好不要使用因子(或cbind)。我读到你的数据如下df <- data.frame(Substance, Jan10, Apr10, Jul10, Oct10, stringsAsFactors = FALSE) -
对不起,想写字符而不是因子。工作。
标签: r dataframe replace data.table