r - 如果列包含字符串,如何将列标题添加到新列
问题描述
帮助!我正在尝试合并两个文件(两个文件的行数都相等~4,000),但一个有一个摘要列,另一个没有,我不知道该怎么做。抱歉,我是 R 新手。
我的逻辑是文件 B 上的 IF 语句,如果它的列等于“是”,它将列标题打印到一个也名为“All_results”的新列,然后通过“ID”和“All_results”合并两个文件。是否有任何建议的 R 函数来执行此操作?
*******文件A********
ID All_results cat dog fly
1 [cat, dog] yes yes no
2 [cat] yes no no
3 [cat, fly] yes no yes
4 [dog] no yes no
5 [dog, fly] no yes yes
*****文件B******
ID lion rat frog
1 yes yes no
2 yes no no
3 yes no yes
4 no yes no
5 no yes yes
预期结果******Merged_files********
ID All_results cat dog fly lion rat frog
1 [cat,dog,lion,rat] yes yes no yes yes no
2 [cat,fly] yes no no yes no no
3 [cat, fly,lion,frog] yes no yes yes no yes
4 [dog,rat] no yes no no yes no
5 [dog, fly,rat,frog] no yes yes no yes yes
解决方案
我自己不是 R 的专业人士,但这给了我想要的结果。希望能帮助到你。
filea <- read.table( text = "ID All_results cat dog fly
1 \"[cat, dog]\" yes yes no
2 \"[cat]\" yes no no
3 \"[cat, fly]\" yes no yes
4 \"[dog]\" no yes no
5 \"[dog, fly]\" no yes yes", header = TRUE)
fileb <- read.table(text = "ID lion rat frog
1 yes yes no
2 yes no no
3 yes no yes
4 no yes no
5 no yes yes", header = TRUE)
fileab <- merge(filea[,-c(2)], fileb, by = "ID")
fileab$All_results <- apply(fileab, 1,
function(x) paste("[", paste(colnames(fileab)[x == "yes"], collapse = ","), "]", sep = ""))
产生这个结果
ID cat dog fly lion rat frog All_results
1 yes yes no yes yes no [cat,dog,lion,rat]
2 yes no no yes no no [cat,lion]
3 yes no yes yes no yes [cat,fly,lion,frog]
4 no yes no no yes no [dog,rat]
5 no yes yes no yes yes [dog,fly,rat,frog]
不区分大小写的更新:
插入这个:grepl("yes", x, ignore.case = T)
fileab$All_results <- apply(fileab, 1, function(x) paste("[",
paste(colnames(fileab)[grepl("yes", x, ignore.case = T)], collapse = ","), "]", sep = ""))
推荐阅读
- python - 如何使用鼠标单击使用 OpenCV 和 Python 更改变量?
- javascript - 从 chrome 开发工具获取 CSS 作为 JavaScript 对象值
- python - 在 Python dash - 如何在从回调内存中读取 JSON 文件后填充数据表
- c - 我的 Visual Studio Code 无法正确运行我的代码
- php - laravel 中的迁移命令
- spring-boot - 微服务中的分布式 GraphQL
- vue.js - 在所有 vue 组件实例之间共享变量
- r - 如何使用 r 中的 plot() 在 x 轴上创建具有有序字符变量的散点图?
- c# - asp.net core DI - 我可以使服务依赖于其他服务吗
- java - 我想按数字和符号“。”分割字符串。在java中