我对编码完全陌生,所以如果这应该很容易解决或找到,请原谅我 - 也许它是如此简单以至于到目前为止没有人费心解释,或者我只是没有使用正确的关键字进行搜索。
我的数据集中有一列包含所有可能组合的字母 f、n、i。现在我只想找到那些包含 f 或 n 的行,但不能同时包含它们。所以这可能是 f,或 fi,或 n,或 ni。然后我想在箱线图中比较这两组行。所以理想情况下我会有两个盒子:一个包含属于组 f 的所有数据点,包括 fi,另一个包含属于组 n 的所有数据点,包括 ni。
我的数据集示例:
df <- data.frame(D = c("f", "f", "fi", "n", "ni", "ni", "fn", "fn"), y = c(1, 0.8, 1.1, 2.1, 0.9, 8.8, 1.7, 5.4))
D y
1 f 1.0
2 f 0.8
3 fi 1.1
4 n 2.1
5 ni 0.9
6 ni 8.8
7 fn 1.7
8 fn 5.4
现在我想要得到的是这个子集:
D y
1 f 1.0
2 f 0.8
3 fi 1.1
4 n 2.1
5 ni 0.9
6 ni 8.8
然后以某种方式在一组中分别有 1、2、3 和 4、5、6,以绘制在箱线图中。
到目前为止,我只成功地获得了一个子集,它只有 f 或 n 的条目,但没有 fi、ni 等,这不是我想要的,使用以下代码:
df2<-df[df$D==c("f","n"),]
并创建一个包含所有不同组的子集,其中包含 f 和 n:
df2 <- df[grepl("f", df$D) | grepl("n", bat.df$D),]
我读到了“异或”运算符 xor 但是当我尝试像这样使用它时:
df2 <- bat.df[xor(match("n", df$D), match("f", df$D)),]
它只是给了我一个充满 NA 的数据框。但即使这确实有效,我想我也只能制作一个包含四个组 f、n、fi 和 ni 的箱线图,我只想要两个组。那么我怎样才能让该代码工作,我该如何从那里继续呢?
我希望这对于第一个问题来说不会太糟糕!在这上面花了太多时间后,我有点睡眼惺忪。非常感谢任何关于我的问题、在哪里寻找答案或如何改进问题的帮助!