【发布时间】:2018-08-28 02:10:09
【问题描述】:
我希望能够根据两个现有变量中的特定值创建一个新变量。我的数据框看起来像:
structure(list(id = structure(c(1L, 2L, 3L, NA, NA, NA), .Label = c("blue",
"red", "yellow"), class = "factor"), value = c(-4.3, -2.5, -3.6,
NA, NA, NA)), .Names = c("id", "value"), row.names = c(NA, -6L
), class = "data.frame")
我想创建一个新列,其中仅包含那些与蓝色有关的值(例如 4.2)。所有其他值都会导致 NA,如下所示:
structure(list(id = structure(c(1L, 2L, 3L, NA, NA, NA), .Label = c("blue",
"red", "yellow"), class = "factor"), value = c(-4.3, -2.5, -3.6,
NA, NA, NA), newvalue = c(-4.3, NA, NA, NA, NA, NA)), .Names = c("id",
"value", "newvalue"), row.names = c(NA, -6L), class = "data.frame")
我尝试了以下方法:
b1 <- dat$id=="blue"
dat$newvalue <- dat$value[b1]
但这会用相同的值 (-4.3) 填充新列中的每个单元格。
【问题讨论】: