Arrays 从数组到数据帧获取数据
我有两个数据集,第一个是数据帧Arrays 从数组到数据帧获取数据,arrays,r,dataframe,Arrays,R,Dataframe,我有两个数据集,第一个是数据帧 df1 <- data.frame(user=c(1:10), h01=c(3,3,6,8,9,10,4,1,2,5), h12=c(5,5,3,4,1,2,8,8,9,10),a=numeric(10)) 行表示手机天线id,列表示时间段,array1中的值表示在该时间段有多少人连接到天线。因此,array1[1,1]将打印在00:00和1:00之间连接到天线1的人数,array1[2,2]将打印在1:00和2:00之间连接到天线2的人数,依此类推 我要
df1 <- data.frame(user=c(1:10), h01=c(3,3,6,8,9,10,4,1,2,5), h12=c(5,5,3,4,1,2,8,8,9,10),a=numeric(10))
行表示手机天线id,列表示时间段,array1
中的值表示在该时间段有多少人连接到天线。因此,array1[1,1]
将打印在00:00和1:00之间连接到天线1的人数,array1[2,2]
将打印在1:00和2:00之间连接到天线2的人数,依此类推
我要做的是为df1
中的每个用户
从array1
中获取在同一时间段内连接到相同天线的总人数,并将值放入a列中
例如,第一个用户在00:00和1:00AM之间连接到天线3,在1:00AM和2:00AM之间连接到天线5,因此a
中的值应该是array1[3,1]
加上array1[5,2]
我用了一个for循环来做这个
aux1 <- df1[,2]
aux2 <- df1[,3]
for(i in 1:length(df1$user)){
df1[i,4] <- sum(array1[aux1[i],1],array1[aux2[i],2])
}
这个循环工作并给出正确的值,问题是两个数据集(df1
和array1
)非常大df1
有超过20000个用户和24个时间段,array1
有超过1300个天线,更不用说这些数据对应于一个社会经济级别的用户,我总共有5个,因此简化代码是强制性的
如果有人能给我展示一种不同的方法,我会很高兴,特别是如果它没有for循环的话。试试这种方法:
df1$a <- array1[df1$h01,1] + array1[df1$h12,2]
df1$a尝试以下方法:
df1$a <- array1[df1$h01,1] + array1[df1$h12,2]
df1$a将此概念扩展为函数式方法,这样您就不必写出24条语句-vars将此概念扩展为函数式方法,这样您就不必写出24条语句-vars
df1$a <- array1[df1$h01,1] + array1[df1$h12,2]