我在R中有一个更大的数据帧,我希望用行名进行一些计算。以下部分显示的数据框架包含236个气象站,每个气象站显示9次,因为每个气象站对每个天气变量都有9个不同的预报小时。事实上,每小时没有列在它自己的列是无关紧要的,因为我想把降雪加起来,平均风和温度。因此,我的最终数据帧将把数据帧连接成236行(每个站一列),总降雪量、平均风速和平均温度。
我尝试过应用程序家族中的许多函数,并在dplyr包中尝试过这一点,但它不喜欢行名。我也很难将数据帧转换成实际格式(包括R的正确数据框架格式),这样行名和天气变量就可以一起计算。我将行名列为字符,并将它们作为矩阵绑定到原始数据框架中,但这也不起作用。
困在这里,有什么想法吗?
下面是我的数据框架的一小部分(这里的复制粘贴功能不会让我保持它的一致性,所以我尽可能地添加了一个站点,这样引号就不在实际数据中了),我还没有图像权限。谢谢。
snowfall sfc.wind Tavg
EET - Alabaster, AL "0" "5.606221" "45.38081"编辑:下面告诉我如何正确地粘贴在我的矩阵和它在这里。
肖恩下面的代码解决了我的问题。它旁边有绿色支票标记。
snowfall sfc.wind Tavg
EET - Alabaster, AL 0.00000000 4.5129950 39.490030
EET - Alabaster, AL 0.00000000 4.5047869 36.087611
EET - Alabaster, AL 0.00000000 5.0126637 39.441394
EET - Alabaster, AL 0.00000000 5.0111759 45.682309
EET - Alabaster, AL 0.00000000 2.8716592 42.776499
EET - Alabaster, AL 0.00000000 2.7937856 37.322987
EET - Alabaster, AL 0.00000000 2.5351705 36.701948
EET - Alabaster, AL 0.00000000 1.9576756 34.456469
EET - Alabaster, AL 0.00000000 1.6846636 34.150641
BHM - Birmingham, AL 0.00000000 4.5466909 38.533949
BHM - Birmingham, AL 0.00000000 4.4607041 34.891818
BHM - Birmingham, AL 0.00000000 5.1888168 38.405422
BHM - Birmingham, AL 0.00000000 5.4596529 44.992042
BHM - Birmingham, AL 0.00000000 3.0826392 42.159321
BHM - Birmingham, AL 0.00000000 2.8546392 36.715275
BHM - Birmingham, AL 0.00000000 2.5729845 36.133261
BHM - Birmingham, AL 0.00000000 2.0355549 33.933232
BHM - Birmingham, AL 0.00000000 1.7289972 33.543341
DCU - Decatur, AL 0.00122047 3.6517845 34.109912
DCU - Decatur, AL 0.00000000 3.6832448 31.485904
DCU - Decatur, AL 0.00000000 4.2819648 35.502855
DCU - Decatur, AL 0.00000000 5.2777885 43.234060
DCU - Decatur, AL 0.00003937 3.0233904 40.613362
DCU - Decatur, AL 0.00003937 2.7680023 35.587844
DCU - Decatur, AL 0.00000000 2.0555607 34.899179
DCU - Decatur, AL 0.00000000 1.4499551 32.708740
DCU - Decatur, AL 0.00000000 1.2004947 32.616132发布于 2015-01-24 01:24:38
R数据帧不能有重复的行名,但矩阵可以。您需要一个数据框架,这样您就可以在不同的列中拥有不同类型的数据。当将具有重复行名的矩阵转换为数据帧时,行名将被删除,因此需要将它们添加回列。
df <- data.frame(yourMatrix) # convert to data frame, drop row names
df <- cbind(station = rownames(yourMatrix), df) # add row names as column 若要将操作应用于具有相同气象站的所有行,请使用dplyr。
library(dplyr)
df %>%
group_by(nameOfWeatherStationsColumn) %>%
summarize(
snowfall = sum(snowfall),
wind = mean(sfc.wind),
temp = mean(Tavg)
)发布于 2015-01-24 00:06:23
尝试使用tapply并假设您的数据文件名为dat
with(dat, tapply(snowfall, rownames(dat) ,
function(x) sum(as.numeric(x),na.rm=TRUE) )
)
#-----------
EET - Alabaster, AL
0 https://stackoverflow.com/questions/28120156
复制相似问题