gpt4 book ai didi

rbind tbl 和 df 给出过滤器错误

转载 作者:行者123 更新时间:2023-12-02 03:58:40 27 4
gpt4 key购买 nike

我正在使用 dplyr 并喜欢它,但发现了一个奇怪的行为。我正在清理来自不同来源的一些数据并将它们放在一个数据框中。其中一部分需要更多清理,使用 dplyr 完成并生成一个 tbl 对象。另一部分更简单,我有一个 data.frame 对象。我将它们rbind在一起,当我进行分析时,尝试使用dplyr过滤功能,它无法正常工作。示例:

df1 <- data.frame(
group = factor(rep(c("C", "G"), 5)),
value = 1:10)
df1 <- df1 %>% group_by(group) #df1 is now tbl
df2 <- data.frame(
group = factor(rep("G", 10)),
value = 11:20)
df3 <- rbind(df1, df2) #df2 is data.frame
df3 %>% filter(group == "C") #returns filtered rows in df1 and all rows of df2
Source: local data frame [15 x 2]
Groups: group

group value
1 C 1
2 C 3
3 C 5
4 C 7
5 C 9
6 G 11
7 G 12
8 G 13
9 G 14
10 G 15
11 G 16
12 G 17
13 G 18
14 G 19
15 G 20

如果我这样做df3[df3$group == "C", ],它就能正常工作。错误?

最佳答案

这是因为当您在 df1 上使用 group_by 时,它的结构会发生变化,并且会按组对其进行操作。当你执行 rbind 时

df3 <- rbind(df1, df2) 

R 尝试创建与第一个参数(即 df1)具有相同结构的 df3,但由于 df1 和 df2 是不同类型的数据帧,因此当您应用过滤器时,它仅在 df1 上应用 groupwose 并导致不稳定的输出。

如果你检查

df3<-rbind(df2,df1)

df3 是一个没有组的普通数据帧,并给出正确的输出。

关于rbind tbl 和 df 给出过滤器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25919927/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com