![](/img/trans.png)
[英]How do I replace values in one dataset using values from another dataset in R?
[英]How to replace values from one dataset, with values from another dataset in R
我希望用 R 中另一行的值替換 dataframe 中的行。 我將兩者合並在一起並創建了一個列,該列指定數據來自(data_set)的 dataframe。 在兩個數據集中出現相同的“project_element”的地方,我想用另一個數據集中的相應值替換它。 例如,下面是我擁有的數據框的摘錄。 我想用動物數據集的值替換數據集寵物中的“任務 1”值。
df1<-data.frame(value = c(1,2,3,4,5),
project_element = c("Task 1", "Task 1", "Task 2", "Task 3", "Task 4"),
data_set = c("pets", "animals", "pets", "pets", "pets"))
有人可以建議我如何做到這一點,或者推薦一個很好的資源來查找這個嗎?
非常感謝。
對於每個項目,您可以反轉值,以便數據集“寵物”go 的值變為“動物”,反之亦然。
library(dplyr)
df1 %>% group_by(project_element) %>% mutate(new_value = rev(value))
# value project_element data_set new_value
# <dbl> <chr> <chr> <dbl>
#1 1 Task 1 pets 2
#2 2 Task 1 animals 1
#3 3 Task 2 pets 3
#4 4 Task 3 pets 4
#5 5 Task 4 pets 5
不是最優雅的解決方案,但它有效:
setDT(df)
df[, index := 1:.N, by = "project_element"]
df <- data.frame(df) %>%
group_by(project_element) %>%
mutate(
value = ifelse(value != df[df$data_set == "animals",]$value & sum(index) > 2, df[df$data_set == "animals",]$value, value)
)
它創建一個索引來計算相同project_element
的出現次數,並使用索引列的總和來決定必須替換哪些行。
我們可以用
df1$new_value <- with(df1, ave(value, project_element, FUN = rev))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.