如何基于过滤器将计算结果添加到另一个数据集

时间:2017-07-27 08:18:34

标签: r dataset

我有两个数据集,我需要添加一个基于两个变量的特定级别的值。我需要将dat dataset上计算的值添加到dat1 dataset,因此输出应该像dat2一样。任何想法如何(dat1中的值是文本) ?

 dat3 <- read.table(text = "      lamps  vases
                                  7  9
                                  1  6 
                                  3  5 
                                  7  8 
                                  5  4
                                  1  3 
                                  0  7
                                  6  6
                                  8  9  ", header = TRUE) 

dat2 <- read.table(text = "      lamps  vases est
                                  3,5   4,5    0.6
                                  8      9      0.4
                   ", header = TRUE) 
dat2 <- read.table(text = "      lamps  vases est
                                   7  9       0
                                   1  6       0
                                   3  5       0.6
                                   7  8       0 
                                   5  4       0.6
                                   1  3       0 
                                   0  7       0
                                   6  6       0
                                   8  9       0.4", header = TRUE) 

1 个答案:

答案 0 :(得分:1)

我们可以尝试使用tidyverse。通过将第一个数据集('灯','花瓶'列(separate_rows),left_join与第一个数据集分开,将第二个数据集'dat2'(OP的帖子中有2行)转换为'long'格式( 'df1' - 在OP的帖子中标记为'df3'),replace_na将'est'中的NA更改为0

library(tidyverse)
separate_rows(dat2, lamps, convert = TRUE) %>% 
    separate_rows(vases, convert = TRUE) %>% 
    left_join(dat1, ., by = c("lamps", "vases")) %>%
    replace_na(list(est = 0))
#   lamps vases est
#1     7     9 0.0
#2     1     6 0.0
#3     3     5 0.6
#4     7     8 0.0
#5     5     4 0.6
#6     1     3 0.0
#7     0     7 0.0
#8     6     6 0.0
#9     8     9 0.4