簡體   English   中英

如何將一個數據集中的值替換為 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM