首页 > 解决方案 > R:如何更改具有负面条件的所有值

问题描述

我有这个数据框

Data structure(list(ID = 1:3, WEEK1 = c(1L, "A", 1.23), WEEK2 = c(1L, "AL", 1.68), WEEK3 = c("L", 1L, 2L)), class = "data.frame", row.names = c(NA, -3L))

DF ID  WEEK1    WEEK2   WEEK3
   1   1        A       1.23
   2   1        AL      1.68 
   3   L        1       2

数据框中有很多随机字符串。我想要一个负条件循环,将所有不是 1 的值更改为 0。

就像在数据框中

DF ID  WEEK1    WEEK2   WEEK3
   1   1        O       O
   2   1        O       O 
   3   O        1       O

这只能更改已知字符串,但是否可以将其更改为否定条件?

df %>% mutate(across(matches("WEEK"), chartr, old = '123', new =  'ABC'))

标签: rloopsconditional-statements

解决方案


我会建议下一种方法。您必须注意数据框中的所有值都是字符串:

#Data
Data <- structure(list(ID = 1:3, WEEK1 = c("1", "A", "1.23"), WEEK2 = c("1", 
"AL", "1.68"), WEEK3 = c("L", "1", "2")), class = "data.frame", row.names = c(NA, 
-3L))

编码:

#Loop
for(i in 2:dim(Data)[2])
{
  Data[,i]<-ifelse(Data[,i]!='1',0,Data[,i])
}

输出:

  ID WEEK1 WEEK2 WEEK3
1  1     1     1     0
2  2     0     0     1
3  3     0     0     0

推荐阅读