R解开数据集

use*_*015 1 r dataset

我想解开R数据集并以长格式获取它.例如,如果我输入HairEyeColor,我会得到

, , Sex = Male

        Eye
Hair    Brown Blue Hazel Green
Black    32   11    10     3
Brown    53   50    25    15
Red      10   10     7     7
Blond     3   30     5     8

, , Sex = Female

        Eye
Hair    Brown Blue Hazel Green
Black    36    9     5     2
Brown    66   34    29    14
Red      16    7     7     7
Blond     4   64     5     8
Run Code Online (Sandbox Code Playgroud)

如何获得所有542长格式的列表?

ric*_*rdo 5

你想要的包 reshape2

require(reshape2)
melt(HairEyeColor)
Run Code Online (Sandbox Code Playgroud)

注释中的澄清确认了您想要的是获取行并重复它们而不是在列中压缩该信息value(默认情况下).

为此,在评论中作为Tyler执行以下操作:

x <- melt(HairEyeColor)
x[rep(seq_len(nrow(x)), x$value), -4]
Run Code Online (Sandbox Code Playgroud)

第一行制作x,打印在下面.

第二行告诉R重复第一行(的组合Hair,Eye,Sex)value次.的含义-4逗号之后(如在[..., -4])是NOT包括第四列(在这种情况下value重复所述排时).

这是x默认值的输出melt.

> melt(HairEyeColor)
   Hair   Eye    Sex value
1  Black Brown   Male    32
2  Brown Brown   Male    53
3    Red Brown   Male    10
4  Blond Brown   Male     3
5  Black  Blue   Male    11
6  Brown  Blue   Male    50
7    Red  Blue   Male    10
8  Blond  Blue   Male    30
9  Black Hazel   Male    10
10 Brown Hazel   Male    25
11   Red Hazel   Male     7
12 Blond Hazel   Male     5
13 Black Green   Male     3
14 Brown Green   Male    15
15   Red Green   Male     7
16 Blond Green   Male     8
17 Black Brown Female    36
18 Brown Brown Female    66
19   Red Brown Female    16
20 Blond Brown Female     4
21 Black  Blue Female     9
22 Brown  Blue Female    34
23   Red  Blue Female     7
24 Blond  Blue Female    64
25 Black Hazel Female     5
26 Brown Hazel Female    29
27   Red Hazel Female     7
28 Blond Hazel Female     5
29 Black Green Female     2
30 Brown Green Female    14
31   Red Green Female     7
32 Blond Green Female     8
Run Code Online (Sandbox Code Playgroud)

  • 话虽如此,我认为你想要:`x < - melt(HairEyeColor); x [rep(seq_len(nrow(x)),x $ value), - 4]` (3认同)

Ram*_*ath 5

简单的基础R解决方案

as.data.frame(HairEyeColor)
Run Code Online (Sandbox Code Playgroud)