我几乎可以肯定这个问题已被提出并得到了解答,但我不确定如何提出这个问题,所以这里有: 我有这样的数据(大约有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>
谢谢!
答案 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)
一些有用的分析基础知识网站&绘制您需要的内容包括: