将data.frame转换为单行

Mai*_*ura 5 r plyr reshape

我有这些数据:

structure(list(type = c("journal", "all", "similar_age_1m", "similar_age_3m", 
"similar_age_journal_1m", "similar_age_journal_3m"), count = c("13972", 
"754555", "22408", "56213", "508", "1035"), rank = c("13759", 
"754043", "22339", "56074", "459", "947"), pct = c("98.48", "99.93", 
"99.69", "99.75", "90.35", "91.50")), .Names = c("type", "count", 
"rank", "pct"), row.names = c(NA, -6L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)

我想把它变成一行,列的名称2:4以相应的类型为前缀.例如journal.count,journal.rank......最快的方法是什么?出于某种原因dcast,reshape并没有为我做这个,我的解决方案有点太麻烦.

Bri*_*ggs 5

你提到过reshape2,所以这是一种方式:

library("reshape2")
dcast(melt(dat, id.var="type"), 1~variable+type)
Run Code Online (Sandbox Code Playgroud)

这给了:

  1 count_all count_journal count_similar_age_1m count_similar_age_3m
1 1    754555         13972                22408                56213
  count_similar_age_journal_1m count_similar_age_journal_3m rank_all
1                          508                         1035   754043
  rank_journal rank_similar_age_1m rank_similar_age_3m
1        13759               22339               56074
  rank_similar_age_journal_1m rank_similar_age_journal_3m pct_all pct_journal
1                         459                         947   99.93       98.48
  pct_similar_age_1m pct_similar_age_3m pct_similar_age_journal_1m
1              99.69              99.75                      90.35
  pct_similar_age_journal_3m
1                      91.50
Run Code Online (Sandbox Code Playgroud)

然而,type和变量用_,而不是分开..