r - 是否有一个 R 函数或 dplyr 函数,您可以在其中分配值而无需替换?
问题描述
例如,如果我有一个数据框:
v1 v2
a 1
b 2
c 3
a 1
c 3
我想创建 v3 给定 v1 等于它们各自的值。例如,如果 v1 等于 a,那么我想将“科学”分配给 v3,如果 v1 等于 b,那么我想将“数学”分配给 v3 等等。
v1 v2 v3
a 1 science
b 2 maths
c 3 english
a 1 science
c 3 english
我会以标准方式使用 dplyr 的 case_when 或重新编码列出许多条件,但是变量中有太多唯一值,我应用条件来有效地执行此操作。
谢谢。
解决方案
您可以使用内置的 merge() 函数来实现这一点。更像是 sql 中的连接。下面是一个例子
df1 <- data.frame(v1=c("a","b","c","a","e"),v2=c(1,2,3,4,5))
df2 <- data.frame(c1=c("a","b","c","d","e"),c2=c("maths","mechanics","biology","chemistry","physics"))
df3 <- merge(df1,df2,by.x='v1',by.y='c1',all.x = TRUE)
#INPUT
#df1
# v1 v2
# 1 a 1
# 2 b 2
# 3 c 3
# 4 a 4
# 5 e 5
#df2
# c1 c2
# 1 a maths
# 2 b mechanics
# 3 c biology
# 4 d chemistry
# 5 e physics
#df3
# v1 v2 c2
# 1 a 1 maths
# 2 a 4 maths
# 3 b 2 mechanics
# 4 c 3 biology
# 5 e 5 physics
推荐阅读
- firebase - 如何获取地图的 DocumentSnapshot 并检索地图的长度?
- c# - 如何验证 Blazor EditForm 中的单个字段?
- autosar - 是否需要将 ContainerIPDU 映射到 arxml 中的框架
- php - $this PHP 返回 null
- c++ - C++ 向量的限制
- flutter - 出现错误“只能在初始化程序中访问静态成员”
- javascript - 如何使用引导过滤器按首字母搜索名称
- html - R Leaflet - 如何在弹出窗口中组合文本和图形?
- c# - 无法将基实例的对象转换为派生类型(泛型用法)
- javascript - 我正在尝试编写一个简单的二进制搜索,但我无法让它返回位置,它找到但不会返回它