【发布时间】:2014-02-11 18:28:15
【问题描述】:
我正在尝试根据“参考”数据帧 (df) 中另一列 (A) 上的两个值之间的间隔来获取列 (B) 的值的总和:
A <- seq(1:10)
B <- c(4,3,5,7,5,7,4,7,3,7)
df <- data.frame(A,B)
我找到了两种方法:
y <- sum(subset(df, A < 3 & A >= 1, select = "B"))
> y
[1] 7
和
z <- with(df,sum(df[A<3 & A>=1,"B"]))
> z
[1] 7
但是,我想根据存储在另一个数据帧上的两个值向量来执行此操作
C <- c(3,7,7)
D <- c(1,1,5)
df2 <- data.frame(C,D)
为每对 C 和 D 值获取一列 y 值。
我已经创建了一个函数:
myfn <- function(c,d) {
y <-sum(subset(df, A < c & A >= d, select = "B"))
return(y)
}
这对数字很有效
myfn(3,1)
[1] 7
但不是向量。
myfn(c=C,d=D)
[1] 19
Warning messages:
1: In A < a :
longer object length is not a multiple of shorter object length
2: In A >= b :
longer object length is not a multiple of shorter object length
> myfn(df2$C,df2$D)
[1] 19
Warning messages:
1: In A < a :
longer object length is not a multiple of shorter object length
2: In A >= b :
longer object length is not a multiple of shorter object length
>
有人对我如何计算值序列的这种间隔有任何建议吗?
【问题讨论】:
-
今后,请使用“代码”工具(
{}按钮)而不是块引用工具来衬托您的代码。 -
谢谢,我不知道该怎么做。以后我会更加小心的。
标签: r vector dataframe sum intervals