簡體   English   中英

使用循環根據另一列的條件更改一列的值 R

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM