[英]R, select values from data frame column based on matching value in a second column to a vector
我有一個像這樣的數據框:
<table>
<tr><td>Task</td><td>UserStory</td><tr>
<tr><td>123</td><td>abc</td><tr>
<tr><td>4321</td><td>abc</td><tr>
<tr><td>8763</td><td>abc</td><tr>
<tr><td>9087</td><td>efg</td><tr>
<tr><td>0652</td><td>efg</td><tr>
<tr><td>7609</td><td>hij</td><tr>
</table>
我已將“用戶故事”的唯一值收集到向量中。 (“ abc”,“ efg”,“ hij”)。 假設我已經將此向量創建為“ UserStories”。
UserStories <- c("abc", "efg", "hij")
我想為第一個向量中的每個值創建一個匹配Tasks的向量,最終目標是使用此結構創建第二個數據幀:
<table>
<tr><td>abc</td><td>1234</td><td>4321</td><td>8763</td><tr>
<tr><td>efg</td><td>9087</td><td>0652</td><td>NA</td><tr>
<tr><td>hij</td><td>609</td><td>NA</td><td>NA</td><tr>
</table>
我考慮過用NA填充缺失值后,將它們重新放入第二個數據幀:
abc,1234,4321,8763 efg,9087,0652,NA hij,7609,NA,NA
我一直在搜尋整個下午,沒有找到方法。
我想將UserStories向量傳遞給一個函數,該函數將為與每個UserStory相關的所有任務提取一系列向量。
在此先感謝所有參加者。
軟件包有很多更好的方法可以做到這一點,但是我總是首先嘗試使用R代碼:
df <- data.frame(Task = c(123,4321,8763,9087,0652,7609), UserStory = c("abc","abc","abc","efg","efg","hij"))
# Splitting
df.split <- split(df$Task, df$UserStory)
# Combining
maxLength <- max(rapply(df.split, length))
# initialize
new <- list()
z <- NULL # hold the object for length editing to include NAs
for(i in 1:length(df.split)){
z <- df.split[[i]]
length(z) <- maxLength # edit the length
new[[i]] <- c(names(df.split)[i], z)
}
final <- as.data.frame(do.call(rbind,new))
final
# V1 V2 V3 V4
#1 abc 123 4321 8763
#2 efg 9087 652 <NA>
#3 hij 7609 <NA> <NA>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.