【问题标题】:Different conditions for different levels in different variables不同变量不同水平的不同条件
【发布时间】:2021-08-22 16:46:19
【问题描述】:

我有一个包含许多变量的数据集,我想对不同变量的不同级别应用不同的条件。

data<- read.table(text="
                  Group Group2  Census  Volume
FolC    A   1   0
FolC    A   2   0
FolC    A   3   0
FolC    A   7   0
Fol10   B   1   0.2
Fol10   B   2   0.3
Fol10   B   3   0.8
Fol10   B   7   0
Fol40   C   1   0.1
Fol40   C   2   0.1
Fol40   C   3   0.6
Fol40   C   7   0
FloC    D   1   0.1
FloC    D   2   0.2
FloC    D   3   0.2
FloC    D   7   0.1
Flo10   E   1   0.3
Flo10   E   2   0
Flo10   E   3   1
Flo10   E   7   0
                  
                  ", header=T); head(data); tail(data)

我有以下变量:Group(字符串)、Group2(字符串)、Census(数字)、... 我需要的是同时选择: a) 组中人口普查等于“3”的行等于“Fol10” b) 组中人口普查等于“2”的行等于“Flo10” 我尝试了一些不同的代码。我在下面添加了最后一个。

data2<- data %>%
  select(Group, Group2,Census,Volume) %>%
  filter((Group %in% "Fol10" & Census = 3)  | 
        (Group %in% "Flo10" & Census = 2)); data2

我想要这样的结果

  Group Group2 Census Volume
1 Fol10      B      3    0.8
2 Flo10      E      2    0.0

【问题讨论】:

  • 嗯,这对我来说似乎是一个工作代码,所以我不明白哪里出了问题。如果您可以分享data 的样本、您获得的输出以及您想要的输出,那么我们可能会为您提供帮助。顺便说一句,您可以将 %in% 替换为 == 以获得相同的结果。
  • 感谢您的回答。我刚刚更新了问题并添加了一些数据以及我想要的输出。

标签: r filter dplyr multiple-conditions


【解决方案1】:

你可以使用 -

library(dplyr)

result <- data %>% 
    filter(Group == "Fol10" & Census ==  3 | Group == "Flo10" & Census ==  2)

result

#  Group Group2 Census Volume
#1 Fol10      B      3    0.8
#2 Flo10      E      2    0.0

我们也可以将基数 R 用作 -

subset(data, Group == "Fol10" & Census ==  3 | Group == "Flo10" & Census ==  2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 2021-04-15
    • 1970-01-01
    • 2013-06-25
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多