堆叠数据集使用" for循环" R

时间:2017-01-21 02:11:26

标签: r for-loop

我在回答家庭作业问题时遇到了麻烦。

通过堆叠gm2创建更大的数据集 n=100次。也就是说,如果nrg是数字 gm2ncg行的行数是列数, 较大的数据集应该有100*nrg行和 ncg列。 调用堆叠数据集biggm2。 要创建堆叠数据集, 使用biggm2 <- NULL初始化并使用 一个for循环,用于构建biggm2个图层 一次。使用system.time()函数计算此代码的时间。 使用system.time()来计算R的示例 命令,例如,x <- rnorm(100000)是:

代码:

system.time(
{
  x <- rnorm(100000) # Could put multiple lines of R code here
})

我是R的新手,这需要花费太多时间才能找到答案。因此,我在这里提出这个问题。

我正在使用库(gapminder)

要添加,&#39; gm2&#39;是一个数据集: 列yearlifeExppopgdpPercap并将此数据集另存为gm2。 同时将gm2强制转换为矩阵并另存为gm3

这是我读取数据集所做的。这是对的吗?

gm2 <- c(CanUS2$year, CanUS2$lifeExp, CanUS2$pop, CanUS2$gbpPercap)
gm2
gm3 <- matrix(gm2, nrow=24, ncol=4)
gm3

或者这是正确的吗?

gm2 <- subset(CanUS2, select = c("year","lifeExp","pop","gdpPercap"))

但是在这里,由于gm2已经是一个矩阵,所以没有强制转向矩阵的意义。

gm3 <- matrix(gm2v, nrow=24, ncol=4)
gm3

我真的很困惑。 任何建议都会非常感激。

1 个答案:

答案 0 :(得分:0)

library(gapminder)

Tidyverse:

library(dplyr)

filter(gapminder, country %in% c("United States", "Canada")) %>%
  select(year, lifeExp, pop, gdpPercap) -> tidyverse_can_us

head(tidyverse_can_us)
## # A tibble: 6 × 4
##    year lifeExp      pop gdpPercap
##   <int>   <dbl>    <int>     <dbl>
## 1  1952   68.75 14785584  11367.16
## 2  1957   69.96 17010154  12489.95
## 3  1962   71.30 18985849  13462.49
## 4  1967   72.13 20819767  16076.59
## 5  1972   72.88 22284500  18970.57
## 6  1977   74.21 23796400  22090.88

基地R:

gapminder[with(gapminder, country %in% c("United States", "Canada")),
          c("year", "lifeExp", "pop", "gdpPercap")] -> base_r_can_us

head(base_r_can_us)
## # A tibble: 6 × 4
##    year lifeExp      pop gdpPercap
##   <int>   <dbl>    <int>     <dbl>
## 1  1952   68.75 14785584  11367.16
## 2  1957   69.96 17010154  12489.95
## 3  1962   71.30 18985849  13462.49
## 4  1967   72.13 20819767  16076.59
## 5  1972   72.88 22284500  18970.57
## 6  1977   74.21 23796400  22090.88

对于其中任何一个,您丢失了将值与国家/地区联系起来的因子变量。我们也不知道你为什么需要/需要一个矩阵。我假设你正在提取加拿大&amp;来自您的变量名称的美国数据,但您的整个问题大部分都是不连贯的,因此很难知道您拥有哪些数据以及您想要/需要的结果。