【问题标题】:How to write to new file for each elements freq [duplicate]如何为每个元素频率写入新文件[重复]
【发布时间】:2018-10-10 09:07:13
【问题描述】:

我是 R 的初学者 我有二进制 csv 文件,例如:

   a;b;c;d
 A;0;0;1;1
 B;1;1;1;0
 C;1;1;0;1
 D;0;0;0;1

我在 R 中阅读

data <- read.csv2("/home/beka/data.csv",sep = ";",header = TRUE)

我如何编写一个新文件,例如:例如:

A;a;0
A;b;0
A;c;1
A;d;0
B;a;1
B;b;1

谢谢

【问题讨论】:

标签: r file csv matrix


【解决方案1】:

转换成matrix后可以使用melt

library(reshape2)
melt(as.matrix(df))

【讨论】:

    【解决方案2】:

    您可以使用 base R 的 stack 来重塑您的数据。

    df.out <- setNames(
        data.frame(rep(rownames(df), each = ncol(df)), stack(df)[c(2, 1)]),
        c("row", "col", "val"))
    df.out;
    #   row col val
    #1    A   a   0
    #2    A   a   1
    #3    A   a   1
    #4    A   a   0
    #5    B   b   0
    #6    B   b   1
    #7    B   b   1
    #8    B   b   0
    #9    C   c   1
    #10   C   c   1
    #11   C   c   0
    #12   C   c   0
    #13   D   d   1
    #14   D   d   0
    #15   D   d   1
    #16   D   d   1
    

    使用write.csv(df.out, row.names = FALSE) 保存为CSV 文件。


    样本数据

    df <- read.table(text =
        "   a;b;c;d
    A;0;0;1;1
    B;1;1;1;0
    C;1;1;0;1
    D;0;0;0;1", sep = ";", header = T)
    

    【讨论】:

      猜你喜欢
      • 2019-10-25
      • 1970-01-01
      • 2015-03-31
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      • 1970-01-01
      • 2017-02-26
      • 2014-03-16
      相关资源
      最近更新 更多