我正在尝试构建一个数据框架,以便可以使用一组特定的数据生成图,但是我无法将数据正确地放入表中。
因此,这是我可以从数据查询中获得的信息:
> head(c, n=10)
EVTYPE FATALITIES INJURIES
834 TORNADO 5633 91346
856 TSTM WIND 504 6957
170 FLOOD 470 6789
130 EXCESSIVE HEAT 1903 6525
464 LIGHTNING 816 5230
275 HEAT 937 2100
427 ICE STORM 89 1975
153 FLASH FLOOD 978 1777
760 THUNDERSTORM WIND 133 1488
244 HAIL 15 1361
然后,我尝试生成一组数据变量以构建完成的data.frame,如下所示:
a <- c(c[1,1], c[1,2], c[1,3])
b <- c(c[6,1], c[4,2] + c[6,2], c[4,3] + c[6,3])
d <- c(c[2,1], c[2,2], c[2,3])
e <- c(c[3,1], c[3,2], c[3,3])
f <- c(c[5,1], c[5,2], c[5,3])
g <- c(c[7,1], c[7,2], c[7,3])
h <- c(c[8,1], c[8,2], c[8,3])
i <- c(c[9,1], c[9,2], c[9,3])
j <- c(c[10,1], c[10,2], c[10,3])
k <- c(c[11,1], c[11,2], c[11,3])
df <- data.frame(a,b,d,e,f,g,h,i,j)
names(df) <- c("Event", "Fatalities","Injuries")
但是,那失败了。我得到的是所有数据变量的长字符串,重复了10次。绝招,但这不是我想要的。
我想获得一个完整的data.frame,其中包含十(10)行数据,就像原始的一样,但是我的合并数据就位。那可能吗。
我正在使用R版本3.5.3。 tidyverse库无法在该版本上安装。
关于如何生成data.frame的任何想法?
答案 0 :(得分:1)
如果您想要的是Barplot,下面的一段代码可以帮助您:
首先,您需要通过使用df
对两个数值变量进行列绑定并转置结果数据帧来以正确的格式(这可能是您在cbind
中所做的事情)获得的数据使用t
(即,将行变成列,反之亦然):
plotdata <- t(cbind(c$FATALITIES, c$INJURIES))
然后将布局设置为您的绘图,在x轴上留出较大的空白以容纳您的长因子名称:
par(mfrow=c(1,1), mar = c(8,3,3,3))
现在您可以绘制数据了;您可以从c$EVTYPE
抓取标签,减小cex.names
中的标签大小,然后用las
旋转标签,以免过度绘制:
barplot(plotdata, beside=T, names = c$EVTYPE, col=c("red","blue"), cex.names = 0.7, las = 3)
(您可以添加main =
来定义绘图的标题。)