将值从一列移动到另一列并替换为NA

时间:2014-08-22 17:55:54

标签: r

我的数据框中有一个名为size的列,其中包含数字和字符的混合。我想将所有字符值移到下一列,并将其替换为NA' s。这是我的数据现在的样子。

size <- c(680,1800,720,"apartment","loft") 
type <- c("apartment","available now","apartment","available now","available jul 20")
data <- cbind(size,type)


     size        type              
[1,] "680"       "apartment"       
[2,] "1800"      "available now"           
[3,] "720"       "apartment"       
[4,] "apartment" "available now"   
[5,] "loft"      "available jul 20"

这就是我喜欢的样子:

     size        type              
[1,] "680"       "apartment"       
[2,] "1800"      "available now"           
[3,] "720"       "apartment"       
[4,] NA          "apartment"
[5,] NA          "loft"

不幸的是,type列中没有统一的值来调用以帮助替换size的值。我希望避免创建一个独特类型的向量来调用,因为这些唯一值可能会改变。我希望的是一种在不同列中描绘字符与数字的方法。任何帮助是极大的赞赏!

1 个答案:

答案 0 :(得分:1)

您可以使用:

rep.rows <- !grepl("^[0-9]+$", data[ ,"size"])
data[rep.rows, ] <- cbind(NA, data[rep.rows, "size"])

产地:

     size   type           
[1,] "680"  "apartment"    
[2,] "1800" "available now"
[3,] "720"  "apartment"    
[4,] NA     "apartment"    
[5,] NA     "loft"  

这里我们首先找到第1列的哪些行不是数字,然后用修改后的数据替换它们。