Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:用不同大小数据框的值填充数据框的列_R_Conditional Statements - Fatal编程技术网

R:用不同大小数据框的值填充数据框的列

R:用不同大小数据框的值填充数据框的列,r,conditional-statements,R,Conditional Statements,考虑以下数据帧: df <- data.frame(x = c("A", "A", "A", "B", "C", "C"), y = c("abl", "rtg", "jaf", "rlt", "thk", "lpv")) z = c(rep("abl", 4), rep("rtg", 2), rep("jaf",1), rep("zfw", 3), "thk") dat <- data.frame(z = z, group = rep(NA, length

考虑以下数据帧:

df <- data.frame(x = c("A", "A", "A", "B", "C", "C"),
            y = c("abl", "rtg", "jaf", "rlt", "thk", "lpv"))

z = c(rep("abl", 4), rep("rtg", 2), rep("jaf",1), rep("zfw", 3), "thk")
dat <- data.frame(z = z, group = rep(NA, length(z)))
我就是不知道怎么做

到目前为止我尝试的代码:

dat$group[which(dat$z == df$y)] <- df$x[which(df$y == dat$z)]
dat$group[which(dat$z %in% df$y)] <- df$x[which(df$y %in% dat$z)]

dat$group[which(dat$z==df$y)]您试图做的是一个
join
操作:

dplyr::left_join(dat, df, by = c('z' = 'y'))

     z group    x
1  abl    NA    A
2  abl    NA    A
3  abl    NA    A
4  abl    NA    A
5  rtg    NA    A
6  rtg    NA    A
7  jaf    NA    A
8  zfw    NA <NA>
9  zfw    NA <NA>
10 zfw    NA <NA>
11 thk    NA    C
dplyr::left_join(dat,df,by=c('z'='y'))
z组x
1 abl NA A
2 abl NA A
3 abl NA A
4 abl NA A
5 rtg NA A
6 rtg NA A
7贾夫纳A
8 zfw NA
9 zfw NA
10 zfw NA
11厚钠碳纤维

将有几种不同的策略,但我认为了解这种操作的适当术语会有所帮助。

您试图做的是
加入
操作:

dplyr::left_join(dat, df, by = c('z' = 'y'))

     z group    x
1  abl    NA    A
2  abl    NA    A
3  abl    NA    A
4  abl    NA    A
5  rtg    NA    A
6  rtg    NA    A
7  jaf    NA    A
8  zfw    NA <NA>
9  zfw    NA <NA>
10 zfw    NA <NA>
11 thk    NA    C
dplyr::left_join(dat,df,by=c('z'='y'))
z组x
1 abl NA A
2 abl NA A
3 abl NA A
4 abl NA A
5 rtg NA A
6 rtg NA A
7贾夫纳A
8 zfw NA
9 zfw NA
10 zfw NA
11厚钠碳纤维

将有几种不同的策略,但我认为了解这种操作的适当术语会有所帮助。

一个简单的R基解决方案是使用
匹配

dat$group <- df$x[match(dat$z,df$y)]
dat
     z group
1  abl     A
2  abl     A
3  abl     A
4  abl     A
5  rtg     A
6  rtg     A
7  jaf     A
8  zfw  <NA>
9  zfw  <NA>
10 zfw  <NA>
11 thk     C

dat$group一个简单的R基解决方案是使用
match

dat$group <- df$x[match(dat$z,df$y)]
dat
     z group
1  abl     A
2  abl     A
3  abl     A
4  abl     A
5  rtg     A
6  rtg     A
7  jaf     A
8  zfw  <NA>
9  zfw  <NA>
10 zfw  <NA>
11 thk     C
dat$组的可能重复项的可能重复项