我在数据框中有几个单元格,后面跟一个星号。我想用*和NA替换单元格中的数据。这是样本数据
a<-c(1.23,"4.2*", 5,6,"8*")
b<-c(0.01,0.5,"3.687*",9,10)
c<-data.frame(a,b)
c
我试过c [c ==“*”]&lt; -NA但只替换了只包含*
的单元格答案 0 :(得分:6)
尝试胁迫数字:
data.frame( a = as.numeric(a), b = as.numeric(b) )
a b
1 1.23 0.01
2 NA 0.50
3 5.00 NA
4 6.00 9.00
5 NA 10.00
任何无效的数字都将成为NA。 OP的首选方法的缺点是,当你似乎应该使用数字时,你最终会得到一个充满因子或字符的data.frame。
答案 1 :(得分:2)
我们也可以使用
df.groupby(level=1).cumprod() \
.groupby(level=1).shift() \
.groupby(level=1).fillna(method='bfill')
答案 2 :(得分:1)
c[apply(c, 1:2, function(i) grepl('\\*', i))] <- NA
c
# a b
#1 1.23 0.01
#2 <NA> 0.5
#3 5 <NA>
#4 6 9
#5 <NA> 10