我有一個類似的資料框(只是更長)。我的目標是將 [2] 的用戶名復制到 [8] 并將 [5] 的用戶名復制到 [7]。我知道制作副本很奇怪,但這是有原因的。
我一直在嘗試用 ifelse 解決它:
df$Username <- ifelse(df$Name == df$Name, df$Username, NA)
但它不起作用。我相信這很簡單,但是在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"
))
uj5u.com熱心網友回復:
我會用dplyr:
df %>% group_by(Name) %>%
mutate(Username=max(Username, na.rm=TRUE))
輸出:
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
在沒有NAs( na.rm=TRUE) 的情況下獲得最大值mutate。
uj5u.com熱心網友回復:
一個可能的解決方案:
library(tidyverse)
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"
))
df <- rbind(df, c("OmarAlghabra", NA), c("ScottAitchison",NA))
df %>%
group_by(Name) %>%
fill(Username) %>%
ungroup
#> # A tibble: 8 × 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 OmarAlghabra
#> 8 ScottAitchison ScottAAitchison
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/352483.html
上一篇:不同的執行緒從Microsoft.Extensions.DependencyInjection獲取相同的DbContext
下一篇:基于R中的時間序列列提取資料
