基于r中不丢失的单元格值进行重新编码

时间:2019-06-19 18:14:19

标签: r recode

我有一个数据集

   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()函数。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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分配给这些行的类别列,而与当前值无关。这是您需要的吗?