首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R操作数据帧枢轴

R操作数据帧枢轴
EN

Stack Overflow用户
提问于 2013-09-05 18:47:20
回答 2查看 121关注 0票数 0

我在csv文件中有一些数据如下所示。

代码语言:javascript
复制
Food            Calories    Cholesterol Total_Fat   Sodium 
Frozen_Broccoli 73.8            0           0.8         68.2 
Carrots,Raw 74.8            23.7            0           0.1

创建该数据的代码(在下面的用户Drew Steen注释之后更新代码):

代码语言:javascript
复制
Food=c('Frozen Broccoli',   'Carrots,Raw')
Cholesterol=c('0',  '23.7')
Total_Fat=c('0.8',  '0')
Sodium=c('68.2',    '0.1')
Calories=c('73.8',  '74.8')
Food=c('Frozen Broccoli',   'Carrots,Raw')
original=data.frame(Food, Cholesterol,Total_Fat,Sodium,Calories)
View(original)

我想转换部分数据,使其看起来如下。

代码语言:javascript
复制
Frozen_Broccoli    Calories X73.8
Frozen_Broccoli Cholesterol   0.0
Frozen_Broccoli   Total_Fat   0.8
Frozen_Broccoli      Sodium  68.2
Carrots,Raw    Calories  74.8
Carrots,Raw Cholesterol  23.7
Carrots,Raw   Total_Fat   0.0
Carrots,Raw      Sodium   0.1

我可以使用Excel和vba创建数据。但是他们在R中也是这样吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-05 19:01:02

我认为,您提供的代码没有精确地复制您的.csv文件。(尝试names(original)看看如何实现)。尝尝这个

代码语言:javascript
复制
original <- read.csv("your_data.csv")
require(reshape2)
new_df <- melt(original, id.vars="Food")
票数 1
EN

Stack Overflow用户

发布于 2013-09-06 05:11:56

这个答案有两个目的:

  1. 如何更好地共享可复制的数据,以解决评论中的一个问题。
  2. stack表示基R。

第1部分:数据创建。

请注意,这些数字没有被引用,我们可以将它们直接放在data.frame中。这意味着,在试图回答你问题的人的工作空间中,会有更少的对象乱扔。

代码语言:javascript
复制
original <- data.frame(
  Food = c('Frozen Broccoli', 'Carrots,Raw'),
  Cholesterol = c(0, 23.7), 
  Total_Fat = c(0.8, 0),
  Sodium = c(68.2, 0.1),
  Calories = c(73.8, 74.8))
original
#              Food Cholesterol Total_Fat Sodium Calories
# 1 Frozen Broccoli         0.0       0.8   68.2     73.8
# 2     Carrots,Raw        23.7       0.0    0.1     74.8

另一个解决方案

可以使用基R中的stack完成“重塑”过程。在堆叠数据时,删除第一列。使用cbind把它放回去。

一般来说,stackmelt快。也有unlist,但是对于这个特定的问题,这是非常麻烦的。

代码语言:javascript
复制
cbind(original[1], stack(original[-1]))
#              Food values         ind
# 1 Frozen Broccoli    0.0 Cholesterol
# 2     Carrots,Raw   23.7 Cholesterol
# 3 Frozen Broccoli    0.8   Total_Fat
# 4     Carrots,Raw    0.0   Total_Fat
# 5 Frozen Broccoli   68.2      Sodium
# 6     Carrots,Raw    0.1      Sodium
# 7 Frozen Broccoli   73.8    Calories
# 8     Carrots,Raw   74.8    Calories
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18643744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档