我有一个包含多列的数据框。第一列没有名称,因此R给它提供了Col1标题。我必须从数据框中删除具有Value&#的某些行34; TBD"在Col1。
数据框:
Col1 Name Addreess
<NA> ABC ddfddf
<NA> XYZ HJJJ
<NA> KKL PPOI
tbd HGGF UYTT
<NA> fFFF OOOO
我用下面的代码来做,
df1<- df[!(df$Col1=="tbd"), ]
以excel格式编写输出。但是,输出不会删除tbd行并将数据帧中的所有值更改为NA
答案 0 :(得分:1)
我找到了一个使用循环的解决方案。它不是解决这个问题最优雅的方法,但有帮助。
首先是您的数据框
Col1 <- c(NA,NA,NA,'tbd',NA)
Name <- c('ABC','XYZ','KKL','HGGF','fFFF')
Addreess <- c('ddfddf','HJJJ','PPOI','UYTT','OOOO')
df <- data.frame(Col1,Name,Addreess)
> df
Col1 Name Addreess
1 <NA> ABC ddfddf
2 <NA> XYZ HJJJ
3 <NA> KKL PPOI
4 tbd HGGF UYTT
5 <NA> fFFF OOOO
应用循环来查找带有&#39; tbd&#39;在数据框的Col1列中构建一个新的,没有&#39; tbd&#39;,只选择Col1中的行&#39; NA&#39;
df1 <- c()
for(i in 1:nrow(df)){
if(is.na(df$Col1[i])){
df1 <- rbind(df1,df[i,])
}
}
导致:
> df1
Col1 Name Addreess
1 <NA> ABC ddfddf
2 <NA> XYZ HJJJ
3 <NA> KKL PPOI
5 <NA> fFFF OOOO
修改<!/强>
有一种更简单,更优雅的方式来执行此操作:
v <- which(df$Col1 %in% 'tbd')
df <- df[-v,]
我希望能帮助你。
问候。