基于 r 中非缺失单元格值的重新编码

recoding based on non missing cell value in r

我的数据集看起来像

   df1 <- data.frame(Id=c(1L,2L,3L,4L,5L),pricetag=c(NA,5,NA,3,NA),category=c(NA,"Z",NA,NA,"Y"),stringsAsFactors=F)

> df1
  Id pricetag category
1  1       NA       NA
2  2        5       Z
3  3       NA       NA
4  4        3       NA
5  5       NA       Y

对于非缺失的价格标签值,我想将类别变量重新编码为 "X"。所以我看起来像这样。

> df1
  Id pricetag category
1  1       NA       NA
2  2        5       X
3  3       NA       NA
4  4        3       X
5  5       NA       Y

我想不出 ifelse() 集成了 !is.na() 的函数。

有什么想法吗?

transform(df1, category = replace(category, !is.na(pricetag), "X"))
#  Id pricetag category
#1  1       NA     <NA>
#2  2        5        X
#3  3       NA     <NA>
#4  4        3        X
#5  5       NA        Y
df1 <- data.frame(Id=c(1L,2L,3L,4L,5L),pricetag=c(NA,5,NA,3,NA),category=c(NA,"Z",NA,NA,"Y"),stringsAsFactors=F)
> df1
  Id pricetag category
1  1       NA     <NA>
2  2        5        Z
3  3       NA     <NA>
4  4        3     <NA>
5  5       NA        Y
> df1$category[which(!is.na(df1$pricetag))] <- 'X'
> df1
  Id pricetag category
1  1       NA     <NA>
2  2        5        X
3  3       NA     <NA>
4  4        3        X
5  5       NA        Y

which 调用识别 df1 中不为 NA 的行,然后将 X 分配给这些行的类别列,而不考虑当前值。这是你需要的吗?