R 在表中工作-用于处理边距和和单个值的函数
这是我的小数据集R 在表中工作-用于处理边距和和单个值的函数,r,function,R,Function,这是我的小数据集 set.seed(123) X1 <- rep(1:3, each = 4) X2 <- c(1:4, 1:4, 1:4) Y <- rnorm (12, 4, 20) myd <- data.frame(X1, X2, Y) # "unmelten" form of the dataframe aggregate(Y ~ X1, myd, 'c') X1 Y.1 Y.2 Y.3 Y
set.seed(123)
X1 <- rep(1:3, each = 4)
X2 <- c(1:4, 1:4, 1:4)
Y <- rnorm (12, 4, 20)
myd <- data.frame(X1, X2, Y)
# "unmelten" form of the dataframe
aggregate(Y ~ X1, myd, 'c')
X1 Y.1 Y.2 Y.3 Y.4
1 1 -7.2095129 -0.6035498 35.1741663 5.4101678
2 2 6.5857547 38.3012997 13.2183241 -21.3012247
3 3 -9.7370570 -4.9132394 28.4816359 11.1962765
另外两个例子来说明我的观点
For X2, Y1.1 cell
(X2,Y.1) - sum(X2 row) - sum(Y.1 column) + grand total (= sum(Y))
For X3, Y.3 cell
(X3,Y.3) - sum(X3 row) - sum(Y.3 column) + grand total (= sum(Y))
同样,这将为矩阵中的每个单元格输出一个大小为3 x 4的矩阵
我正试图写一个函数来实现这一点,但我能得到任何想法。请帮帮我就这么做
z1 <- aggregate(Y ~ X1, myd, 'c')[,-1]
ans <- z1 - rowSums(z1) - colSums(z1) + sum(z1)
[,1] [,2] [,3] [,4]
[1,] 64.98307 65.92300 20.13181 34.45743
[2,] 31.60013 106.46100 75.71199 -40.37646
[3,] -17.03576 31.87768 108.41788 85.46648
z1
z1 <- aggregate(Y ~ X1, myd, 'c')[,-1]
ans <- z1 - rowSums(z1) - colSums(z1) + sum(z1)
[,1] [,2] [,3] [,4]
[1,] 64.98307 65.92300 20.13181 34.45743
[2,] 31.60013 106.46100 75.71199 -40.37646
[3,] -17.03576 31.87768 108.41788 85.46648