遍历数据集的每一行和每列

时间:2018-03-22 03:56:36

标签: r dataset rows

我是R的新手,我需要将几个数据集转换为一个大的mysql表。

我需要的是迭代数据集的每一行,并让每一行将列的标签和行的值以及它的id添加到一个新行中。

示例:让我们说下面的数据集:

      ID    NAME    AGE
1     2589  Joe     31
2     2590  Joseph  15
3     2591  Maria   40

我需要把它变成:

      id   question  answer
1     2589 NAME      Joe
2     2589 AGE       31
3     2590 NAME      Joseph
4     2590 AGE       15
5     2591 NAME      Maria
6     2591 AGE       40

我需要对不具有相同列数的几个数据集执行此操作,但结果数据集应具有相同的格式。

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

试试tidyr::gather()。假设数据框为mydata

的示例
library(tidyr)
mydata %>% 
  gather(question, answer, -ID)

答案 1 :(得分:0)

使用tidyr::gather将表格转换为长格式,然后按ID

排序
library(dplyr)
library(tidyr)

txt <- "ID    NAME    AGE
1     2589  Joe     31
2     2590  Joseph  15
3     2591  Maria   40"

df <- read.table(text = txt, header = TRUE)

df %>% 
  gather(key = "question", value = "answer", -ID) %>% 
  arrange(ID)

#>     ID question answer
#> 1 2589     NAME    Joe
#> 2 2589      AGE     31
#> 3 2590     NAME Joseph
#> 4 2590      AGE     15
#> 5 2591     NAME  Maria
#> 6 2591      AGE     40

reprex package(v0.2.0)创建于2018-03-21。