如何从数据集制作双向表?转换单行

  • 本文关键字:转换 单行 数据集 r
  • 更新时间 :
  • 英文 :


我有以下数据帧。

Foo    Gender    Binary    Zip    Frequency
1      Male      0         Yes    4
3      Female    1         No     6
1      Female    0         No     7
2      Male      0         Yes    1
2      Male      0         No     3

如何使Foo成为Row变量,并将其余变量保留为列?我希望输出看起来像这样:

    Gender    Binary    Zip    Frequency
Foo
1    Male       0       Yes        4
     Female     0       No         7
2    Male       0       Yes        1
     Male       0       No         3
3    Female     1       No         6

我知道转置函数,但我认为它适用于整个矩阵或数据帧。有没有一种方法可以转置一列,使其成为行变量?我也知道重塑和dcast,但我不知道如何获得它,使其看起来像上面的那个。

>> dput(head(df1))
>> c(0, 0, 35, 0, 0, 0)

我真的不明白你想做什么。对我来说,你只需要尝试根据Foo列对表进行排序,然后删除重复的值以进行智能打印。

xx <- dat[order(dat$Foo),]
xx$Foo[duplicated(xx$Foo)] <- ""
Foo Gender Binary Zip Frequency
A 1   Male   0      Yes 4        
C     Female 0      No  7        
D 2   Male   0      Yes 1        
E     Male   0      No  3        
B 3   Female 1      No  6   

编辑:

如果你有一个表对象,你不能使用$ operator,你应该使用[来设置

## you should use as.table to get good formatting
xx <- as.table(xx[order(xx[,"Foo"]),])
xx[duplicated(xx[,"Foo"]),"Foo"] <- ""
xx
  Foo Gender Binary Zip Frequency
1   1   Male      0 Yes         4
3     Female      0  No         7
4   2   Male      0 Yes         1
5       Male      0  No         3
2   3 Female      1  No         6

其中xx是:

structure(c("1", "3", "1", "2", "2", "Male", "Female", "Female", 
"Male", "Male", "0", "1", "0", "0", "0", "Yes", "No", "No", "Yes", 
"No", "4", "6", "7", "1", "3"), .Dim = c(5L, 5L), .Dimnames = list(
    c("A", "B", "C", "D", "E"), c("Foo", "Gender", "Binary", 
    "Zip", "Frequency")), class = "table")

看到预期的结果,我做了以下操作。mydf是您的示例数据。

library(dplyr)
mydf %>%
    arrange(Foo) %>%
    group_by(Foo) %>%
    mutate(new = row_number(Foo)) %>%
    ungroup() %>%
    mutate(Foo = ifelse(new != 1, "", Foo)) %>%
    select(-new)
Source: local data frame [5 x 5]
  Foo Gender Binary Zip Frequency
1   1   Male      0 Yes         4
2     Female      0  No         7
3   2   Male      0 Yes         1
4       Male      0  No         3
5   3 Female      1  No         6

最新更新