在R

时间:2019-12-22 15:52:02

标签: r dataframe

我正在尝试构建一个数据框架,以便可以使用一组特定的数据生成图,但是我无法将数据正确地放入表中。

因此,这是我可以从数据查询中获得的信息:

> 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的任何想法?

1 个答案:

答案 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 =来定义绘图的标题。)

这是您应该获得的指示图: enter image description here