[英]Changing value of one column based on condition of another with a loop 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。
我想使用循環來執行此操作,因為有許多成對的列,我不想將它們全部鍵入。 關於這個,go 最好的方法是什么?
我會建議這種循環方法,因為列是成對的:
#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])
}
Output:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.