保留数据框矩阵中的列

时间:2018-03-07 13:36:52

标签: r

将此数据框用作输入

employee <- c('JohnDoe','PeterGynn','laughter','laughter','happiness')
filename <- c('myfile_1','myfile_1','myfile_1','myfile_2','myfile_2')
input <- data.frame(employee, filename)

employee filename
JohnDoe myfile_1
PeterGynn myfile_1
laughter myfile_1
laughter myfile_2
happiness myfile_2

可以使用以下内容来表示存在与否的二进制表示:

as.data.frame.matrix(t(table(input)))
 happiness JohnDoe laughter PeterGynn
myfile_1         0       1        1         1
myfile_2         1       0        1         0

如何将myfile名称列设置为行数,将结果保存到csv中时它们不存在?

2 个答案:

答案 0 :(得分:1)

如果我们需要将rownames作为列,则可以使用rownames_to_column中的tibble

library(tibble)
as.data.frame.matrix(t(table(input))) %>% 
                       rownames_to_column('rn')
#        rn happiness JohnDoe laughter PeterGynn
#1 myfile_1         0       1        1         1
#2 myfile_2         1       0        1         0

可以使用tidyverse

完成
library(tidyr)
library(dplyr)
input %>%
     count(employee, filename) %>% 
     spread(employee, n, fill = 0)
# A tibble: 2
#filename happiness JohnDoe laughter PeterGynn
#* <fctr>       <dbl>   <dbl>    <dbl>     <dbl>
#1 myfile_1      0       1.00     1.00      1.00
#2 myfile_2      1.00    0        1.00      0   

答案 1 :(得分:1)

假设您已按如下方式保存数据:

> d <- as.data.frame.matrix(t(table(input)))

然后,您可以轻松访问rownames并将其保存到新列:

> d['rowname'] <- rownames(d)
> d
         happiness JohnDoe laughter PeterGynn  rowname
myfile_1         0       1        1         1 myfile_1
myfile_2         1       0        1         0 myfile_2

然后,在保存时,它也保存了这些列,在读完之后你当然可以再次设置行名/索引

 rownames(d) <- d['rowname']
相关问题