我有一个类似的数据框(只是更长)。我的目标是将 [2] 的用户名复制到 [8],将 [5] 的用户名复制到 [7]。我知道复制很奇怪,但这是有原因的。
我一直在尝试用 ifelse 来解决它:
df$Username <- ifelse(df$Name == df$Name, df$Username, NA)
Run Code Online (Sandbox Code Playgroud)
但这不起作用。我相信它相当简单,但在 stackoverlow 上找不到任何函数。预先感谢您的任何帮助。
# A tibble: 6 x 2
Name Username
<chr> <chr>
1 ZiadAboultaif ziad_aboultaif
2 ScottAitchison ScottAAitchison
3 DanAlbas DanAlbas
4 JohnAldag jwaldag
5 OmarAlghabra OmarAlghabra
6 ShafqatAli Shafqat_Ali_1
7 OmarAlghabra NA
8 ScottAitchison NA
# Reproducilbe data:
df <- structure(list(Name = c("ZiadAboultaif", "ScottAitchison", "DanAlbas",
"JohnAldag", "OmarAlghabra", "ShafqatAli"), Username = c("ziad_aboultaif",
"ScottAAitchison", "DanAlbas", "jwaldag", "OmarAlghabra", "Shafqat_Ali_1"
)), row.names = c(NA, -6L), class = c("tbl_df", "tbl", "data.frame"
))
Run Code Online (Sandbox Code Playgroud)
我会用dplyr:
df %>% group_by(Name) %>%
mutate(Username=max(Username, na.rm=TRUE))
Run Code Online (Sandbox Code Playgroud)
输出:
Name Username
<chr> <chr>
1 ZiadAboultaif ziad_aboultaif
2 ScottAitchison ScottAAitchison
3 DanAlbas DanAlbas
4 JohnAldag jwaldag
5 OmarAlghabra OmarAlghabra
6 ShafqatAli Shafqat_Ali_1
7 OmarAlghabra OmarAlghabra
8 ScottAitchison ScottAAitchison
Run Code Online (Sandbox Code Playgroud)
获得最大值而不需要NAs( na.rm=TRUE) 内部mutate。
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |