r - 创建一个新的数据框列,该列返回另一列元素在给定列表中出现的位置
问题描述
我有一个清单:
A_List <- (A, B, C, D, E)
我有一个df:
A <- c(A, C, E, D, B)
B <- (Z, Y, X, W, V)
我想创建一个“新”列,其值是通过查看“A”列中的每个元素并返回该元素在列表 A 中出现的索引来派生的。
一个 | 乙 | 新的 |
---|---|---|
一个 | Z | 1 |
C | 是 | 3 |
乙 | X | 5 |
D | W | 4 |
乙 | 五 | 2 |
我曾尝试将 ifelse() 与 grep 一起使用,但它只需要第一个元素:
df$New <- ifelse(df$A %in% A_List, grep(df$A, A_List), 0)
解决方案
baseR
方法
df$New <- match(df$A, A_list)
dplyr
方法
library(dplyr)
A <- c("A", "C", "E", "D", "B")
B <- c("Z", "Y", "X", "W", "V")
df <- data.frame(A, B)
A_list = LETTERS[1:5]
df %>% mutate(New = match(A, A_list))
A B New
1 A Z 1
2 C Y 3
3 E X 5
4 D W 4
5 B V 2
推荐阅读
- django - 通过 www 访问。将显示 Nginx 欢迎页面 [+ Gunicorn + Django]
- java - 将价值从 Mojo 传递到 pom
- token - Hyperledger Fabric 2.0,Fab Token 源码在哪里?
- java - 合并多个流加入 Flink
- vue.js - 根据路由在组件中显示来自 Vuex 存储的数据
- php - 我如何将两行中的变量合二为一?
- https - 如何将 KeyCloak 的 https 设置为关闭模式?
- azure-devops - 用于创建发布定义的 Azure DevOps REST API
- python - 导入文本夹具时符合 PEP8 的编码样式 (F401 + F811)
- python - Pandas 剪切功能提供的类别比预期的要少