进口和转置数据 - 将记录从列切换到行(转置不熔化/转换)

时间:2014-01-10 17:46:21

标签: r import analysis transpose

我几乎可以肯定这个问题已被提出并得到了解答,但我不确定如何提出这个问题,所以这里有: 我有这样的数据(大约有1000多个看起来像这样):

    KV2c    KV2c    KV2c    I210plus    I210plus    I210plus    I210plus
    12s     16s     16s       1s          2s           2s          4s
    320     200     320      100         200          320          20


     T       T       F        F            T          T            T

如果你注意到,前四行有4个我正在观察的单位的特征......我想把它作为数据帧导入R中,然后查看通过/失败的数量(T和F)基于排列4个顶行的各种方法。

例如,也许我们想要解决所有KV2c的单位也是12S并且在第3行有200,而且我不知道......得到T与F的百分比。 / p>

谢谢!

1 个答案:

答案 0 :(得分:1)

这是一个可重现的示例,其中包含您需要考虑的所有元素。在链接到您自己的文件之前尝试运行它。重要的一步是使用df函数将dft转换为t(),该函数将行转换为列。

请注意,我已经包含了对reshape2库的引用,用于重新格式化您的数据,还有许多分析备选方案。这应该可以帮助您入门,显然您需要在链接到数据时更改文件名和列名。

# to generate a reproducible dataset
test.df = data.frame(
    expand.grid(ch1 = letters[1:3], ch2 = letters[1:3], ch3 = letters[1:3], stringsAsFactors = FALSE),
    test.result = as.character(sample(c("T", "F"), 27, replace = TRUE)))
write.table(t(test.df), file = "testfile.csv", sep = ",", row.names = FALSE, col.names=FALSE)

# now to import the dataset into R
rm(list=ls())
df = read.csv("testfile.csv", header=FALSE)

# transpose your dataset to switch rows and columns and give meaningful names
dft = data.frame(t(df))
names(dft) = c("ch1", "ch2", "ch3", "test.result")
dft$test.result = ifelse(dft$test.result == "T", 1, 0) 

# the data is now in a format to perform analysis and plotting
library(reshape2)
dcast(dft, ch1 + ch2 ~ test.result)
with(dft, table(ch1, test.result, ch2))

作为一种思考后,您很可能希望在分析之前将特征从数据类型character转换为factor。如果您选择使用优秀的ggplot2包,这有助于绘图。以下是将其中一个特征更改为factor的示例:

dft$ch1 = factor(dft$ch1)

一些有用的分析基础知识网站&绘制您需要的内容包括:

http://www.statmethods.net/stats/frequencies.html

http://www.cookbook-r.com/Graphs/