我有一个数据框 df:
df <- data.frame(a = c("b2","d2","a1","c1"), b = c(12, 3, 54, 4))
> df
a b
1 b2 12
2 d2 3
3 a1 54
4 c1 4
Run Code Online (Sandbox Code Playgroud)
和一个外部向量,我希望其顺序a匹配:
vec <- c("a1","b2","c1","d2")
Run Code Online (Sandbox Code Playgroud)
通常我可以使用以下方法执行此操作match:
df <- df[match(vec, df$a),]
> df
a b
3 a1 54
1 b2 12
4 c1 4
2 d2 3
Run Code Online (Sandbox Code Playgroud)
但是,我想知道是否有办法在 dplyr 中做到这一点。我尝试过以下方法,但没有成功:
df <- df %>%
mutate(
a = match(vec, a)
)
> df
a b
1 3 12
2 1 3
3 4 54
4 2 4
Run Code Online (Sandbox Code Playgroud)
谁能建议我的代码哪里出错了?
您仅在 baseR 中排序,因此等效dplyr语法将是。此外,您必须反转 的参数,match因为这里我们希望将 df 的列索引放入向量中vec
df %>% arrange(match(a, vec))
a b
1 a1 54
2 b2 12
3 c1 4
4 d2 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1212 次 |
| 最近记录: |