Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 合并同一类别的值_R - Fatal编程技术网

R 合并同一类别的值

R 合并同一类别的值,r,R,我有一张这样的桌子: Values Type Year 1500 A 1 964 B 1 -222 B 2 761 A 2 2400 C 1 -100 A 1 144 B 2 我的问题是:如何分别显示正值和负值(我

我有一张这样的桌子:

Values        Type       Year
1500          A          1
964           B          1
-222          B          2
761           A          2
2400          C          1
-100          A          1
144           B          2
我的问题是:如何分别显示正值和负值(我认为创建两个名为正值和负值的数据框)以及如何显示净值

预期输出1为:

Data frame 1 (positive values):
Values        Type       Year
1500          A          1 
964           B          1
761           A          2
2400          C          1
144           B          2


Data frame 2 (negative values):
Values        Type       Year
-222          B          2
-100          A          1
预期产出2(净值):


第一个问题使用
split
,第二个问题使用
aggregate

split(d, ifelse(d$Values > 0, "POSITIVE", "NEGATIVE")) 

$NEGATIVE
  Values Type Year
3   -222    B    2
6   -100    A    1

$POSITIVE
  Values Type Year
1   1500    A    1
2    964    B    1
4    761    A    2
5   2400    C    1
7    144    B    2

aggregate(Values ~ Year + Type, data = d, FUN = sum)

  Year Type Values
1    1    A   1400
2    2    A    761
3    1    B    964
4    2    B    -78
5    1    C   2400
资料
d易于使用
数据表

库(data.table)
df pdt
值类型年份
1:1500 A 1
2:964 B 1
3:761 A 2
4:2400c1
5:144 B 2
>乙二胺四乙酸
输入年份值
1:A1400
2:B1964
3:B 2-78
4:A 2761
5:C12400
split(d, ifelse(d$Values > 0, "POSITIVE", "NEGATIVE")) 

$NEGATIVE
  Values Type Year
3   -222    B    2
6   -100    A    1

$POSITIVE
  Values Type Year
1   1500    A    1
2    964    B    1
4    761    A    2
5   2400    C    1
7    144    B    2

aggregate(Values ~ Year + Type, data = d, FUN = sum)

  Year Type Values
1    1    A   1400
2    2    A    761
3    1    B    964
4    2    B    -78
5    1    C   2400
d <- structure(list(Values = c(1500L, 964L, -222L, 761L, 2400L, -100L, 144L), 
                    Type = c("A", "B", "B", "A", "C", "A", "B"), 
                    Year = c(1L, 1L, 2L, 2L, 1L, 1L, 2L)), 
               class = "data.frame", row.names = c(NA, -7L))
> ndt
   Values Type Year
1:   -222    B    2
2:   -100    A    1

> pdt <- dt[Values > 0]

> pdt
   Values Type Year
1:   1500    A    1
2:    964    B    1
3:    761    A    2
4:   2400    C    1
5:    144    B    2

> edt <- dt[, list(Values = sum(Values)), by = c("Type", "Year")]

> edt
   Type Year Values
1:    A    1   1400
2:    B    1    964
3:    B    2    -78
4:    A    2    761
5:    C    1   2400