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