【发布时间】:2017-02-19 05:07:01
【问题描述】:
我有一系列具有唯一帐号的帐户,这些帐号可以按序列号分组。我想使用每个序列开头的唯一帐号作为整个组的新参考列。我可以使用Do 完成我的任务,但是我认为我的解决方案非常不优雅。使用此示例代码,有人可以演示一种更清洁的方式来实现输出吗?
library(tidyverse)
df <- tibble(Seq = factor(c(1,1,1,2,2,2,2,3,3)),
Num = c("8432", "a2233", "234",
"b532", "q265", "z4453", "1232",
"a644", "124"))
df %>%
group_by(Seq) %>%
do(mutate(.,HH = as_vector(.[1,2]))) %>%
ungroup()
输出:
# A tibble: 9 × 3
Seq Num HH
<fctr> <chr> <chr>
1 1 8432 8432
2 1 a2233 8432
3 1 234 8432
4 2 b532 b532
5 2 q265 b532
6 2 z4453 b532
7 2 1232 b532
8 3 a644 a644
9 3 124 a644
【问题讨论】:
-
您的代码出错。你有哪个版本的
dplyr? -
0.5.0 对此表示歉意...我将更新我的 RStudio 版本并更正。
-
如果你能用你得到的解决方案进行更新,那就太好了
-
或许
library(stringi); df %>% group_by(Seq) %>% mutate(HH = Num[stri_detect(Num, regex="[a-z]")]) -
我更新了 Rstudio 并正在运行 Tidyverse 1.1.0 并且没有收到错误,我不确定为什么它不会为你运行。我能够复制上面的代码并毫无问题地运行它。我正在使用的字符串不是由字母数字的存在唯一标识...我在示例中的结构是为了视觉参考。