如何在R数据帧中找到正值和负值的按组数目?

要查找R数据帧中正值和负值的按组数目,可以使用dplyr包的mutate函数。例如,如果我们有一个名为df的数据框,其中有一个分类列x和一个数字列y,则可以使用以下命令找到分类列的正值和负值的数量-

df%>%group_by(x)%>%mutate(positive=sum(y>0),negative=sum(y<0))

考虑以下数据帧-

示例

Group<-sample(LETTERS[1:4],20,replace=TRUE)
y1<-rnorm(20)
df1<-data.frame(Group,y1)
df1
输出结果
  Group  y1
1  C    0.85135509
2  D   -1.65551392
3  C   -3.02201905
4  B   -0.89625797
5  A    0.28129292
6  A   -0.04801872
7  D   -0.95801637
8  B    1.42274072
9  A   -1.18959023
10 A    0.60031795
11 C    0.22474189
12 B    2.17627556
13 D    1.24592142
14 A   -0.46659749
15 B    0.43163726
16 D   -0.95450596
17 C    2.89909436
18 D    0.55951749
19 C   -0.48761069
20 B    0.85106755

加载dplyr程序包并找到df1中“组”列的正负值的按组数目-

示例

library(dplyr) 
df1%>%group_by(Group)%>%mutate(positive=sum(y1>0),negative=sum(y1<0))

小标题:20 x 4

群组:群组[4]

输出结果

   Group y1 positive negative
   <chr> <dbl> <int> <int>
1  C    0.851   3     2
2  D   -1.66    2     3
3  C   -3.02    3     2
4  B   -0.896   4     1
5  A    0.281   2     3
6  A   -0.0480  2     3
7  D   -0.958   2     3
8  B    1.42    4     1
9  A   -1.19    2     3
10 A    0.600   2     3
11 C    0.225   3     2
12 B    2.18    4     1
13 D    1.25    2     3
14 A   -0.467   2     3
15 B    0.432   4     1
16 D   -0.955   2     3
17 C    2.90    3     2
18 D    0.560   2     3
19 C   -0.488   3     2
20 B    0.851   4     1

示例

Class<-sample(c("Male","Female"),20,replace=TRUE)
y2<-rnorm(20)
df2<-data.frame(Class,y2)
df2
输出结果
    Class        y2
1    Male    0.05278402
2  Female    1.61835971
3  Female    1.17452205
4    Male   -0.61445588
5  Female   -0.25727985
6  Female    0.75821980
7    Male   -1.08398301
8    Male    0.77650504
9    Male    0.54157874
10   Male    0.42124703
11   Male    0.36434790
12   Male   -1.03566231
13   Male    0.06208824
14   Male    0.11831360
15   Male    1.22460403
16   Male   -2.43157148
17   Male   -0.50869299
18   Male   -1.14549469
19 Female  1.45219635
20   Male   -1.14271790

在df2中找到Class列的正负值的按组数目-

示例

df2%>%group_by(Class)%>%mutate(positive=sum(y2>0),negative=sum(y2<0))
# A tibble: 20 x 4
# Groups: Class [2]
输出结果
   Class y2 positive negative
 <chr>     <dbl>  <int>   <int>
1   Male   0.0528  8       7
2 Female   1.62    4       1
3 Female   1.17    4       1
4   Male  -0.614   8       7
5 Female  -0.257   4       1
6 Female   0.758   4       1
7   Male  -1.08    8       7
8   Male   0.777   8       7
9   Male   0.542   8       7
10  Male   0.421   8       7
11  Male   0.364   8       7
12  Male  -1.04    8       7
13  Male   0.0621  8       7
14  Male   0.118   8       7
15  Male   1.22    8       7
16  Male  -2.43    8       7
17  Male  -0.509   8       7
18  Male  -1.15    8       7
19 Female 1.45     4       1
20  Male  -1.14    8       7