【问题标题】:Reshaping data in R from CSV file [duplicate]从CSV文件重塑R中的数据[重复]
【发布时间】:2017-07-16 17:53:00
【问题描述】:

我有来自 CSV 文件的数据,格式如下:

Timestamp  variable value
03/10/2014 var1  10
04/10/2014 var1  11
01/10/2014 var2  5
02/10/2014 var2  16
03/10/2014 var2  17
04/10/2014 var2  18

我想获取以下格式的数据:

Timestamp var1 var2
01/10/2014  NaN  5
02/10/2014  NaN  16
03/10/2014  10   17
04/10/2014  11   18

我想在 R 中重塑这些数据。请有任何建议。

【问题讨论】:

  • 这看起来像是两种语言的代码请求? :(
  • 你试过什么?我认为使用 tidyverse 非常简单。看起来你只是从长到宽。
  • 对不起,我是一个r的初学者,所以我真的不知道
  • 唉,@Elin 指的是 Wickham 的论文 vita.had.co.nz/papers/tidy-data.pdf。读一读,看看你是否可以做一些长到宽的转换。如果您没有具体问题,StackOverflow 可能对您不友好,但 R 中的 ? 可以在您遇到问题时找到示例 sn-ps(例如,?data.table)。
  • 也可以尝试谷歌搜索“r long to wide”,你会发现很多信息。一旦你尝试过,如果你有问题或问题,问是有意义的。也看看stackoverflow.com/questions/5890584/…

标签: r reshape import-from-csv


【解决方案1】:

在 R 中你可以使用 dcast

library(reshape2)
df <- rbind.data.frame(c("01/10/2014", "var1", 10),
        c("02/10/2014", "var1", 11),
        c("01/10/2014", "var2", 5),
        c("02/10/2014", "var2", 16))
colnames(df) <- c("Timestamp", "variable", "value")
dcast(df, Timestamp~variable)
#    Timestamp var1 var2
# 1 01/10/2014   10    5
# 2 02/10/2014   11   16

由于您是初学者,我还建议您查看 melt 功能以执行相反的操作

df2 <- dcast(df, Timestamp~variable)
melt(df2, id.vars="Timestamp")
#    Timestamp variable value
# 1 01/10/2014     var1    10
# 2 02/10/2014     var1    11
# 3 01/10/2014     var2     5
# 4 02/10/2014     var2    16

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-09
    • 2017-04-05
    • 1970-01-01
    • 2010-12-04
    • 2017-09-06
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多