在数据框中替换值

3

我需要替换我的数据框中的一些数据,它看起来像这样:

  V1 V2 V3 V4
1  *  *  4  5
2  *  *  4  *
3  4  *  2  2
4  *  *  1  *

如果该单元格中有 "*",则将其替换为上一行相同单元格的值,仅在没有上一行时插入 0。
预期结果:
  V1 V2 V3 V4
1  0  0  4  5
2  0  0  4  5
3  4  0  2  2
4  4  0  1  2

我该怎么做?
编辑:这不是如何在R数据框中用0替换NA值?的重复,因为我不想用NA替换每个"*"的出现,而是想用上面单元格的值替换它(并且仅在第一行中我想用零替换它)- 如果其他问题已经涵盖了这个问题,我看不到它,请给一个非常简单的r知识的人能够理解的例子,谢谢

只需执行zoo :: na.locf(replace(df1,df1 ==“*”,NA))。最好保持为 NA,但如果需要的话,将其更改为 0 更容易。 - akrun
@akrun 这个是如何用上一行相同单元格的值进行替换的?看起来好像把所有东西都替换成了0。在给定的例子中,data[2,4]应该被5替换,而不是0。 - Bernhard
@Bernhard 您是正确的。我错过了那部分。已更正。 - akrun
1
或者使用tidyverse:df1 %>% mutate_all(funs(replace(., .=="*", NA))) %>% fill(names(.)) %>% mutate_all(funs(replace(., is.na(.), 0))) - akrun
1个回答

1
aa<-matrix(c("*","*","4","5","*","*","4","*","4","*","2","2","*","*","1","*"),ncol=4,byrow=T)

aa
   [,1] [,2] [,3] [,4]
[1,] "*"  "*"  "4"  "5" 
[2,] "*"  "*"  "4"  "*" 
[3,] "4"  "*"  "2"  "2" 
[4,] "*"  "*"  "1"  "*" 

aa[aa=="*"]=0
aa
     [,1] [,2] [,3] [,4]
[1,] "0"  "0"  "4"  "5" 
[2,] "0"  "0"  "4"  "0" 
[3,] "4"  "0"  "2"  "2" 
[4,] "0"  "0"  "1"  "0"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接