楼主: panxinfeng
1635 3

[问答] 请教大家一个关于数据整合的问题 [推广有奖]

  • 0关注
  • 1粉丝

已卖:128份资源

博士生

12%

还不是VIP/贵宾

-

威望
0
论坛币
42 个
通用积分
8.1398
学术水平
6 点
热心指数
11 点
信用等级
7 点
经验
2436 点
帖子
181
精华
0
在线时间
156 小时
注册时间
2008-8-14
最后登录
2024-2-13

楼主
panxinfeng 发表于 2014-9-23 10:06:45 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
请教大家一个关于数据整合的问题

假设有数据框data如下:
name  a1 a2 a3 b1 b2 b3 c1 c2 c3 ……
A     1   2  1  3  5  2  6  7  1
B     3   2  4  1  7  2  3  4  2
C     ……
……

我想整合成如下格式
name label a  b  c
A      a   1  2  1
A      b   3  5  2
……
B      c   3  4  2
……

请问代码该如何写,多谢指教!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:数据整合 label name Abel Data 如何

沙发
gssdzc 在职认证  发表于 2014-9-23 22:27:35
这个给顶起来。。。。。。

藤椅
DM小菜鸟 发表于 2014-12-16 15:26:28
谢谢帮顶的兄弟哈~

这里要用reshape2

全部命令示范都在这里了——

比如data:

#   ozone   wind  temp
# 1 23.62 11.623 65.55
# 2 29.44 10.267 79.10
# 3 59.12  8.942 83.90
# 4 59.96  8.794 83.97

And this is long-format data:

#    variable  value
# 1     ozone 23.615
# 2     ozone 29.444
# 3     ozone 59.115
# 4     ozone 59.962
# 5      wind 11.623
# 6      wind 10.267
# 7      wind  8.942
# 8      wind  8.794
# 9      temp 65.548
# 10     temp 79.100
# 11     temp 83.903
# 12     temp 83.968

names(airquality) <- tolower(names(airquality))
head(airquality)
#   ozone solar.r wind temp month day
# 1    41     190  7.4   67     5   1
# 2    36     118  8.0   72     5   2
# 3    12     149 12.6   74     5   3
# 4    18     313 11.5   62     5   4
# 5    NA      NA 14.3   56     5   5
# 6    28      NA 14.9   66     5   6

aql <- melt(airquality) # [a]ir [q]uality [l]ong format
head(aql)
#   variable value
# 1    ozone    41
# 2    ozone    36
# 3    ozone    12
# 4    ozone    18
# 5    ozone    NA
# 6    ozone    28
tail(aql)
#     variable value
# 913      day    25
# 914      day    26
# 915      day    27
# 916      day    28
# 917      day    29
# 918      day    30

aql <- melt(airquality, id.vars = c("month", "day"))
head(aql)
#   month day variable value
# 1     5   1    ozone    41
# 2     5   2    ozone    36
# 3     5   3    ozone    12
# 4     5   4    ozone    18
# 5     5   5    ozone    NA
# 6     5   6    ozone    28

aql <- melt(airquality, id.vars = c("month", "day"),
  variable.name = "climate_variable",
  value.name = "climate_value")
head(aql)
#   month day climate_variable climate_value
# 1     5   1            ozone            41
# 2     5   2            ozone            36
# 3     5   3            ozone            12
# 4     5   4            ozone            18
# 5     5   5            ozone            NA
# 6     5   6            ozone            28

aql <- melt(airquality, id.vars = c("month", "day"))
aqw <- dcast(aql, month + day ~ variable)
head(aqw)
#   month day ozone solar.r wind temp
# 1     5   1    41     190  7.4   67
# 2     5   2    36     118  8.0   72
# 3     5   3    12     149 12.6   74
# 4     5   4    18     313 11.5   62
# 5     5   5    NA      NA 14.3   56
# 6     5   6    28      NA 14.9   66
head(airquality) # original data
#   ozone solar.r wind temp month day
# 1    41     190  7.4   67     5   1
# 2    36     118  8.0   72     5   2
# 3    12     149 12.6   74     5   3
# 4    18     313 11.5   62     5   4
# 5    NA      NA 14.3   56     5   5
# 6    28      NA 14.9   66     5   6

dcast(aql, month ~ variable)
#   month ozone solar.r wind temp
# 1     5    31      31   31   31
# 2     6    30      30   30   30
# 3     7    31      31   31   31
# 4     8    31      31   31   31
# 5     9    30      30   30   30

dcast(aql, month ~ variable, fun.aggregate = mean,
  na.rm = TRUE)
#   month ozone solar.r   wind  temp
# 1     5 23.62   181.3 11.623 65.55
# 2     6 29.44   190.2 10.267 79.10
# 3     7 59.12   216.5  8.942 83.90
# 4     8 59.96   171.9  8.794 83.97
# 5     9 31.45   167.4 10.180 76.90


试一试吧~


板凳
panxinfeng 发表于 2015-1-5 15:50:13
DM小菜鸟 发表于 2014-12-16 15:26
谢谢帮顶的兄弟哈~

这里要用reshape2包
抱歉,好久没有来论坛了。非常感谢!谢谢!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 11:48