r - 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'))
解决方案
我会建议下一种方法。您必须注意数据框中的所有值都是字符串:
#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
推荐阅读
- csv - 创建具有可变类名称的东方 DB 边
- php - 如何摆脱 laravel 中过多的 if 语句?
- google-play-services - 谷歌条形码阅读器可以在手机上不安装播放服务的情况下使用吗?
- android - 在 IntelliJ 中在手机上运行 android 应用程序时出现 ADB 错误
- python - 在 pyspark 中读取数据框时获取空日期?
- scala - 迭代列Scala的元素
- android - Crashlytics NDK 不响应 C++ 崩溃
- bazel - 如何在 bazel 规则中输出结构化错误信息?
- mysql - 在 MYSQL 上优化数百万行的求和/分组查询
- html - CSS - 垂直 dorp-down 菜单在移动设备上不起作用