检查并替换R数据帧中的列值

时间:2017-12-27 12:03:11

标签: r

我有多个文件要使用R读取。我循环遍历文件,获取数据帧,然后尝试更改特定列的值。 R数据帧的示例如下:

DF_A:

ID  ZN
1   0
2   1
3   1
4   0

DF_B:

ID  ZN
1   2
2   1
3   1
4   2

如上图所示,列ZN'对于某些数据框架,可能有0和1,而其他数据框架则有1&2和2。我想要的是 - 当我遍历文件时,我想只在数据框中进行更改,其中列ZN具有1和2,如下所示:1到0和2到1 ZN值为0&1;和1' s的数据帧将保持不变。

我的尝试无效:

if(dataframe$ZN > 1){
    dataframe$ZN<-recode(dataframe$ZN,"1=0;2=1")
  }
  else{
  dataframe$ZN
  }

有任何解决方案吗?

2 个答案:

答案 0 :(得分:2)

如果我们在列中的任何位置检测到ZN的单个值,则一种方法可能是将2的值减1:

if (max(df_A$ZN) == 2) {
    df_A$ZN = df_A$ZN - 1
}

Demo

答案 1 :(得分:0)

如果只有两个值,即0和1,那么

df_A$ZN <- (df_A$ZN==0) + 1
df_A$ZN
#[1] 2 1 1 2

或将case_when用于多个值

library(dplyr)
df_A %>%
  mutate(ZN = case_when(ZN==0 ~2, TRUE ~ 1))