如何解决使用循环R根据另一列的条件更改一列的值
我有一个看起来像这样的数据框,但是它有许多成对的列,格式为“名称”,“ F_Name”。
data.frame("Site" = c("X","Y","Z"),"Temp" = c(2,3,4),"F_Temp" = c(1,5,-3),"Salinity" = c(5,6,7),"F_Salinity" = c(6,1,-3))
每当“ F_Name”等于1或-3时,我都想将“ Name”的值更改为NA。例如,在F_Temp等于-3或1的行中,我想将Temp的值更改为NA。
我想使用循环来执行此操作,因为有许多成对的列,并且我不想全部键入它们。最好的方法是什么?
解决方法
我建议这种循环方法是因为成对的列:
#Data
df <- data.frame("Site" = c("X","Y","Z"),"Temp" = c(2,3,4),"F_Temp" = c(1,5,-3),"Salinity" = c(5,6,7),"F_Salinity" = c(6,1,-3))
#Detect columns with pattern F_
val <- which(grepl('F_',names(df)))
#Loop
for(i in val)
{
df[,i-1] <- ifelse(df[,i]==-3 | df[,i]==1,NA,df[,i])
}
输出:
Site Temp F_Temp Salinity F_Salinity
1 X NA 1 6 6
2 Y 5 5 NA 1
3 Z NA -3 NA -3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。