将行转换为单列

如何解决将行转换为单列

year  Pink Floyd Metallica Rammstein Led Zeppelin Pantera     
2004  600        700        500        400        300
2005  700        300        400        200        500
2006  300        150        600        700        700

大家好。我有一个与我提到的类似的数据。每个组现在都是一个单独的列。我想在组名下打开一个新列,并将年份放入行中。我的意思是:

Bands       2004  2005  2006
Pink Floyd  600   700   300
Metallica   700   300   150
Rammstein

我的原始数据中有77个城市和16年,而不是乐队。所以我的真实数据中有 78 个变量,77 个不同的城市和一年。因此,我可以说我正在处理大量数据。所以,我需要你的帮助。

解决方法

我们可以使用 pivot_longer 包中的 pivot_widertidyr

library(tidyverse)
df %>%
    pivot_longer(cols = -year,names_to = "band") %>%
    pivot_wider(names_from = year,values_from = value)

#   band       `2004` `2005` `2006`
# 1 PinkFloyd     600    700    300
# 2 Metallica     700    300    150
# 3 Rammstein     500    400    600
# 4 LedZepelin    400    200    700
# 5 Pantera       300    500    700
,

这是一个使用 data.table

transpose 选项
> data.table::transpose(setDT(df),keep.names = "Band",make.names = "year")
           Band 2004 2005 2006
1:   Pink Floyd  600  700  300
2:    Metallica  700  300  150
3:    Rammstein  500  400  600
4: Led Zeppelin  400  200  700
5:      Pantera  300  500  700

数据

> dput(df)
structure(list(year = 2004:2006,`Pink Floyd` = c(600L,700L,300L),Metallica = c(700L,300L,150L),Rammstein = c(500L,400L,600L),`Led Zeppelin` = c(400L,200L,700L),Pantera = c(300L,500L,700L)),class = c("data.table","data.frame"),row.names = c(NA,-3L))
,

您可以转置数据框然后更改名称。像这样:

library(tidyr)
# Let be df your dataframe
df <- data.frame(year = c(2005,2005,2006),PinkFloyd = c(600,700,300),Metallica = 
c(700,300,150),Ramstein =c(500,400,600),LedZepelin =c(400,200,700),Pantera=c(300,500,700) ) 

#Transpose data and change names
df_aux <- data.frame(t(df))
colnames(df_aux ) <- unique(df$year)
df_aux <- df_aux[-1,]
df_aux <- tibble::rownames_to_column(df_aux,"Band")

结果是:

> df_aux 
 Band        2005 2004 2006
 PinkFloyd   600  700  300
 Metallica   700  300  150
 Ramstein    500  400  600
 LedZepelin  400  200  700
 Pantera     300  500  700

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?