Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/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_Integer_Numerical_Tapply - Fatal编程技术网

在R中进行四舍五入后应用整数因子求和

在R中进行四舍五入后应用整数因子求和,r,integer,numerical,tapply,R,Integer,Numerical,Tapply,以下是我的问题:我获得了3000 obs的数据。和5000个功能,3000个obs。具有类似于100.1100.3100.5100.7的数字名称。我通过segs将名称改为整数变量,试试这个 set.seed(42) df0 <- data.frame( X = rnorm(100,10,10), Y = rnorm(100), Z = rnorm(100)) df0$seq <- as.integer(df0$X) library(data.tab

以下是我的问题:我获得了3000 obs的数据。和5000个功能,3000个obs。具有类似于100.1100.3100.5100.7的数字名称。我通过
segs将名称改为整数变量,试试这个

set.seed(42)    
df0 <- data.frame(
    X = rnorm(100,10,10),
    Y = rnorm(100), 
    Z = rnorm(100))
df0$seq <- as.integer(df0$X)

library(data.table)
dt = data.table(df0)
dt[,lapply(.SD, sum), by=seq ]

    seq           X            Y           Z
 1:  23 164.8144774  1.293768670 -3.74807730
 2:   4   8.9247301  1.909529066 -0.06277254
 3:  13  40.2090180 -2.036599633  0.88836392
 4:  16 147.8571697 -2.571487358 -1.35542918
 5:  14  72.1640142  0.432493959 -1.49983832
 6:   8  42.8498355 -0.582031919 -1.35989852
 7:  25  75.9995653  0.896369560 -1.08024329
 8:   9  27.5244048  0.833429855 -1.19363017
 9:  30  30.1842371  0.188193035 -0.64574372
10:  32  32.8664539  0.108072728  2.03697217
11:  -3  -7.5714175 -0.899304085 -1.27286230
12:   7  29.6254908 -0.929790177  2.75906514

27:  12  50.2535374 -0.620793351 -3.80900436
28:  24  24.4410126 -0.433169033 -0.02671746
29: -19 -19.9309008 -0.533492330 -1.01759612
30:  11  11.8523056 -1.071782384  0.96954501
31:  19  38.5407490 -0.751408534 -4.81312992
32:   0  -0.9642319  1.453325156  2.20977601
33:  -1  -4.3685646 -0.834654913 -0.24624546
34:  18  18.2177311 -1.594588162  0.27369527
35:  -4  -4.5921400  0.586487537  0.86256338
set.seed(42)

df0使用package data.table,这将非常简单且非常高效。我可以告诉你怎么做。顺便说一句,你正在做一个在循环中生长一个对象的过程。@Roland非常感谢你的建议,我在问题中用一个种子模拟简单的数据
df0
是100乘3,
df
将是35乘3.+1,但最好使用
setDT
将data.frame转换为data.table。
set.seed(42)    
df0 <- data.frame(
X = rnorm(100,10,10),
Y = rnorm(100), 
Z = rnorm(100))
df0$seq <- as.integer(df0$X)
set.seed(42)    
df0 <- data.frame(
    X = rnorm(100,10,10),
    Y = rnorm(100), 
    Z = rnorm(100))
df0$seq <- as.integer(df0$X)

library(data.table)
dt = data.table(df0)
dt[,lapply(.SD, sum), by=seq ]

    seq           X            Y           Z
 1:  23 164.8144774  1.293768670 -3.74807730
 2:   4   8.9247301  1.909529066 -0.06277254
 3:  13  40.2090180 -2.036599633  0.88836392
 4:  16 147.8571697 -2.571487358 -1.35542918
 5:  14  72.1640142  0.432493959 -1.49983832
 6:   8  42.8498355 -0.582031919 -1.35989852
 7:  25  75.9995653  0.896369560 -1.08024329
 8:   9  27.5244048  0.833429855 -1.19363017
 9:  30  30.1842371  0.188193035 -0.64574372
10:  32  32.8664539  0.108072728  2.03697217
11:  -3  -7.5714175 -0.899304085 -1.27286230
12:   7  29.6254908 -0.929790177  2.75906514

27:  12  50.2535374 -0.620793351 -3.80900436
28:  24  24.4410126 -0.433169033 -0.02671746
29: -19 -19.9309008 -0.533492330 -1.01759612
30:  11  11.8523056 -1.071782384  0.96954501
31:  19  38.5407490 -0.751408534 -4.81312992
32:   0  -0.9642319  1.453325156  2.20977601
33:  -1  -4.3685646 -0.834654913 -0.24624546
34:  18  18.2177311 -1.594588162  0.27369527
35:  -4  -4.5921400  0.586487537  0.86256338