使用来自另一个 DF 的值创建 Dataframes 列并在 R 中匹配更新
Create Dataframes columns with values from another DF and update matched in R
我的数据是这样的。
df1:
df2:
预期输出:
任何人都可以帮助 R 中的函数(如果可用的话)。
是否回答:
> df1 %>% inner_join(df2 %>% count(name, language) %>%
+ pivot_wider(names_from = language, values_from = n, values_fill = 0) %>%
+ relocate(c(c, java, r, q, k, t, s)))
Joining, by = "name"
# A tibble: 3 x 9
name var1 c java r q k t s
<chr> <dbl> <int> <int> <int> <int> <int> <int> <int>
1 a 7 1 0 0 1 0 0 1
2 b 8 0 1 0 0 1 0 0
3 c 8 1 0 1 0 0 1 0
>
库(reshape2)
name var1
1 a 7
2 b 8
3 c 8
df2
name language
1 a c
2 a q
3 a s
4 b java
5 b k
6 c r
7 c t
8 c c
df3 <- df1 %>% inner_join(df2 %>% count(name, language)
df3 <- dcast(df3, name + var1 ~ language, value.var = "n", fun.aggregate = sum)
df3
name var1 c java k q r s t
1 a 7 1 0 0 1 0 1 0
2 b 8 0 1 1 0 0 0 0
3 c 8 1 0 0 0 1 0 1
我的数据是这样的。
df1:
df2:
预期输出:
任何人都可以帮助 R 中的函数(如果可用的话)。
是否回答:
> df1 %>% inner_join(df2 %>% count(name, language) %>%
+ pivot_wider(names_from = language, values_from = n, values_fill = 0) %>%
+ relocate(c(c, java, r, q, k, t, s)))
Joining, by = "name"
# A tibble: 3 x 9
name var1 c java r q k t s
<chr> <dbl> <int> <int> <int> <int> <int> <int> <int>
1 a 7 1 0 0 1 0 0 1
2 b 8 0 1 0 0 1 0 0
3 c 8 1 0 1 0 0 1 0
>
库(reshape2)
name var1
1 a 7
2 b 8
3 c 8
df2
name language
1 a c
2 a q
3 a s
4 b java
5 b k
6 c r
7 c t
8 c c
df3 <- df1 %>% inner_join(df2 %>% count(name, language)
df3 <- dcast(df3, name + var1 ~ language, value.var = "n", fun.aggregate = sum)
df3
name var1 c java k q r s t
1 a 7 1 0 0 1 0 1 0
2 b 8 0 1 1 0 0 0 0
3 c 8 1 0 0 0 1 0 1