问题描述
我有这个数据框
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'))
解决方法
我建议采用下一种方法。您必须注意,数据框中的所有值都是字符串:
#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',Data[,i])
}
输出:
ID WEEK1 WEEK2 WEEK3
1 1 1 1 0
2 2 0 0 1
3 3 0 0 0