我想轉置類似於下面的my.data
的數據集,然後對這些行進行求和。轉置數據集
my.data <- "landuse units year county.a county.b county.c county.d
apple acres 2010 0 2 4 6
pear acres 2010 10 20 30 40
peach acres 2010 500 400 300 200"
my.data2 <- read.table(textConnection(my.data), header = T)
my.data2
所需的輸出是:
counties all.fruit
county.a 510
county.b 422
county.c 334
county.d 246
我可以用下面的代碼執行此操作。但是,下面的代碼似乎是一定是巨大的矯枉過正。我希望有一個更簡單的解決方案。
# transpose the data set
tmy.data2 <- t(my.data2)
tmy.data2 <- as.data.frame(tmy.data2)
# assign row names to the data set
my.rows <- row.names(tmy.data2)
transposed.data <- cbind(my.rows, tmy.data2)
transposed.data
# extract numbers to obtain row sums
fruit.data <- as.data.frame(transposed.data[4:dim(transposed.data)[1], 2:dim(transposed.data)[2]])
fruit.data2 <- as.matrix(fruit.data)
fruit.data3 <- matrix(as.numeric(fruit.data2), nrow=(dim(fruit.data2)[1]), byrow=F)
# sum fruit by county
all.fruit <- rowSums(fruit.data3, na.rm=T)
# create row names for summed fruit data
counties <- my.rows[4:length(my.rows)]
almost.final.data <- cbind(counties, all.fruit)
really.final.data <- as.data.frame(almost.final.data)
really.final.data[,2] <- as.numeric(as.character(really.final.data[,2]))
really.final.data
str(really.final.data)
謝謝你的任何建議。我可以使用上面的代碼,但查看這個請求是一個大大提高我的編程的機會。
爲什麼不只是'colSums(my.data2 [,4:7])'? (這會得到一個有名的向量,但將其轉換爲數據幀會很容易)。真正的問題比這更復雜嗎? –
感謝您的建議。我猜想,一旦我開始考慮我所關注的行數,甚至不考慮列總和。 –
如果可以的話,我會給你+10來展示你的嘗試。 –