将行透视到单个列中,并使用R中的列名对它们进行索引

将行透视到单个列中,并使用R中的列名对它们进行索引,r,R,我需要将行值转换为一列,并根据列名和行号创建索引。我在R中检查了很多pivot解决方案,但似乎没有一个能够简单地在不创建方法、总和等的情况下进行转换。如果您能提供帮助,我将不胜感激 df1 <- read.table(textConnection("a1,a2,a3 23,34,4 34,44,98"), sep=",", header=TRUE) df2 <- read.table(textConnection("id,val 1_a1,23 2_a2,34 3_a3,4 4_a

我需要将行值转换为一列,并根据列名和行号创建索引。我在R中检查了很多pivot解决方案,但似乎没有一个能够简单地在不创建方法、总和等的情况下进行转换。如果您能提供帮助,我将不胜感激

df1 <- read.table(textConnection("a1,a2,a3
23,34,4
34,44,98"), sep=",", header=TRUE)

df2 <- read.table(textConnection("id,val
1_a1,23
2_a2,34
3_a3,4
4_a1,34
5_a2,44
6_a3,98"), sep=",", header=TRUE)
为此:

    id val
1 1_a1  23
2 2_a2  34
3 3_a3   4
4 4_a1  34
5 5_a2  44
6 6_a3  98
非常感谢

你可以试试

m1 <- t(df1)
d1 <- data.frame(id=paste(seq_along(m1), 
        rownames(m1)[row(m1)], sep="_"), val=c(m1))

 d1
 #   id val
 #1 1_a1  23
 #2 2_a2  34
 #3 3_a3   4
 #4 4_a1  34
 #5 5_a2  44
 #6 6_a3  98
m1你可以试试

m1 <- t(df1)
d1 <- data.frame(id=paste(seq_along(m1), 
        rownames(m1)[row(m1)], sep="_"), val=c(m1))

 d1
 #   id val
 #1 1_a1  23
 #2 2_a2  34
 #3 3_a3   4
 #4 4_a1  34
 #5 5_a2  44
 #6 6_a3  98
m1你可以试试

m1 <- t(df1)
d1 <- data.frame(id=paste(seq_along(m1), 
        rownames(m1)[row(m1)], sep="_"), val=c(m1))

 d1
 #   id val
 #1 1_a1  23
 #2 2_a2  34
 #3 3_a3   4
 #4 4_a1  34
 #5 5_a2  44
 #6 6_a3  98
m1你可以试试

m1 <- t(df1)
d1 <- data.frame(id=paste(seq_along(m1), 
        rownames(m1)[row(m1)], sep="_"), val=c(m1))

 d1
 #   id val
 #1 1_a1  23
 #2 2_a2  34
 #3 3_a3   4
 #4 4_a1  34
 #5 5_a2  44
 #6 6_a3  98

m1这可以通过
tidyr
包中的
gather
轻松完成:

library(tidyr)
df2 <- gather(df1, id, val)
如果您也使用dplyr包,则可以通过以下方式执行此操作:

library(dplyr)
library(tidyr)
df2 <- df1 %>% gather(id, val) %>% mutate(id = paste(id, seq_len(n()), sep = "_"))
库(dplyr)
图书馆(tidyr)
df2%聚集(id,val)%>%变异(id=paste(id,seq_len(n()),sep=“”))

这可以通过
tidyr
软件包中的
gather
轻松完成:

library(tidyr)
df2 <- gather(df1, id, val)
如果您也使用dplyr包,则可以通过以下方式执行此操作:

library(dplyr)
library(tidyr)
df2 <- df1 %>% gather(id, val) %>% mutate(id = paste(id, seq_len(n()), sep = "_"))
库(dplyr)
图书馆(tidyr)
df2%聚集(id,val)%>%变异(id=paste(id,seq_len(n()),sep=“”))

这可以通过
tidyr
软件包中的
gather
轻松完成:

library(tidyr)
df2 <- gather(df1, id, val)
如果您也使用dplyr包,则可以通过以下方式执行此操作:

library(dplyr)
library(tidyr)
df2 <- df1 %>% gather(id, val) %>% mutate(id = paste(id, seq_len(n()), sep = "_"))
库(dplyr)
图书馆(tidyr)
df2%聚集(id,val)%>%变异(id=paste(id,seq_len(n()),sep=“”))

这可以通过
tidyr
软件包中的
gather
轻松完成:

library(tidyr)
df2 <- gather(df1, id, val)
如果您也使用dplyr包,则可以通过以下方式执行此操作:

library(dplyr)
library(tidyr)
df2 <- df1 %>% gather(id, val) %>% mutate(id = paste(id, seq_len(n()), sep = "_"))
库(dplyr)
图书馆(tidyr)
df2%聚集(id,val)%>%变异(id=paste(id,seq_len(n()),sep=“”))
require(dplyr)#用于mutate()
需要(三天)#用于收集()
d%
变异(id=粘贴(行号(),“id”,sep=“”))
require(dplyr)#用于mutate()
需要(三天)#用于收集()
d%
变异(id=粘贴(行号(),“id”,sep=“”))
require(dplyr)#用于mutate()
需要(三天)#用于收集()
d%
变异(id=粘贴(行号(),“id”,sep=“”))
require(dplyr)#用于mutate()
需要(三天)#用于收集()
d%
变异(id=粘贴(行号(),“id”,sep=“”))


我猜您没有创建
id
column@akrun什么意思?即使在我最初的修订版中,我也包括了我所指的
df2$id行
gather(df1,id,val)#度量中的错误。属性[[1]]:下标超出范围
@akrun我无法重现该错误。您有什么版本的
tidyr
?我有
tidyr\u 0.1.0.9000
同一版本
tidyr\u 0.1.0.9000
我想你没有创建
id
column@akrun什么意思?即使在我最初的修订版中,我也包括了我所指的
df2$id行
gather(df1,id,val)#度量中的错误。属性[[1]]:下标超出范围
@akrun我无法重现该错误。您有什么版本的
tidyr
?我有
tidyr\u 0.1.0.9000
同一版本
tidyr\u 0.1.0.9000
我想你没有创建
id
column@akrun什么意思?即使在我最初的修订版中,我也包括了我所指的
df2$id行
gather(df1,id,val)#度量中的错误。属性[[1]]:下标超出范围
@akrun我无法重现该错误。您有什么版本的
tidyr
?我有
tidyr\u 0.1.0.9000
同一版本
tidyr\u 0.1.0.9000
我想你没有创建
id
column@akrun什么意思?即使在我最初的修订版中,我也包括了我所指的
df2$id行
gather(df1,id,val)#度量中的错误。属性[[1]]:下标超出范围
@akrun我无法重现该错误。您有什么版本的
tidyr
?我有
tidyr\u 0.1.0.9000
同一版本
tidyr\u 0.1.0.9000
谢谢,我欣赏一个纯基础解决方案谢谢,我欣赏一个纯基础解决方案谢谢,我欣赏一个纯基础解决方案谢谢,我欣赏一个纯基础解决方案你为什么想要这样的“id”栏?你总是假定按行未列出吗?我需要一种方法来跟踪它们以前驻留的列,但它对于数据透视数据集中的新列是唯一的。。。如果这是合理的,但未列出的顺序并不是特别重要?我提出这个问题的部分原因是,当R可以处理多个列作为分组变量时,不让值像这样粘贴在一起对我来说更有意义。你为什么希望“id”列像这样?你总是假定按行未列出吗?我需要一种方法来跟踪它们以前驻留的列,但它对于数据透视数据集中的新列是唯一的。。。如果这是合理的,但未列出的顺序并不是特别重要?我提出这个问题的部分原因是,当R可以处理多个列作为分组变量时,不让值像这样粘贴在一起对我来说更有意义。你为什么希望“id”列像这样?你总是假定按行未列出吗?我需要一种方法来跟踪它们以前驻留的列,但它对于数据透视数据集中的新列是唯一的。。。如果这是合理的,但未列出的顺序并不是特别重要?我提出这个问题的部分原因是,当R可以处理多个列作为分组变量时,不让值像这样粘贴在一起对我来说更有意义。你为什么希望“id”列像这样?你总是假定按行未列出吗?我需要一种方法来跟踪它们以前驻留的列,但它对于数据透视数据集中的新列是唯一的。。。如果这是合理的,但未列出的顺序并不是特别重要?我提出这一问题的部分原因是,当R可以处理多个列作为分组变量时,不让值像这样粘贴在一起对我来说通常更有意义。