r - 如何使用目标列表匹配 R 中数据框中的行,一旦匹配,将值添加到新列
问题描述
我有一个数据框 (A),其中包含几列值和文本。第 1 列包含不唯一的名称。我有一个列表,其中包含数据框 A 第 1 列中存在的一些相同名称,它们是唯一的。我想将我的列表添加到数据框 A,如果值匹配,请在数据框 A 中创建一个新列 4 并在该行中添加一个“X”。这是一个示例(粗体中的重复值):
数据框A:
1 2 3
Barb048 53458 0.004
An590 345345 0.485
84Bur 53455 0.8474
hfgjeff 345 0.765
Barb048 542 0.66
Ann9457 4555 0.00746
uryhZe9 84 0.27777
(...)
列表:
Barb048、hfgjeff、Ann9457 (...)
所需的数据框:
1 2 3 4
Barb048 53458 0.004 X
An590 345345. 0.485
84Bur 53455 0.8474
hfgjeff 345 0.765 X
Barb048 542 0.66 X
Ann9457 4555 0.00746 X
uryhZe9
84 0.27
我考虑过使用列表中的值创建一个数据框(B),然后在所有行中包含一个带有 X 的列,然后匹配数据框,但我认为使用目标列表会容易得多。
解决方案
这可以通过ifelse
and来完成%in%
:
df$new <- ifelse(df$X1 %in% names, "X", "")
结果:
df
X1 new
1 Barb048 X
2 An590
3 84Bur
4 hfgje
5 Barb048 X
6 Ann9457 X
7 uryhZe9
数据:
# list of names:
names <- c("Barb048", "hfgjeff", "Ann9457")
# dataframe:
df <- data.frame(
"X1" = c("Barb048","An590", "84Bur","hfgje","Barb048", "Ann9457", "uryhZe9")
)
推荐阅读
- cassandra - 副本数据中心的 Cassandra 目录设置
- sql-server - 为什么我的应用用户找不到始终加密的证书?
- javascript - AJAX 之后的 Kendo DropDownList 选择值
- amazon-web-services - 设置“maxActiveInstances”错误
- java - Android Studio 3.1.2 中的 Gradle 同步失败
- java - 用于 IntelliJ 多线程测试的 Java 工具
- reactjs - Reactjs没有更新任何东西
- java - 解析一个json文件丢失的数据结构 - JAVA
- objective-c - 未设置邮件帐户时应用程序崩溃
- java - 点燃队列是否有一些方法来检查队列是否创建,就像缓存一样