我是R的相对新手,并且无法绕过这个相当基本的问题。我真的很感谢你的帮助。
这里有一些看起来像我的实际数据的玩具数据:
interval = rep(1:5,5)
value = runif(25)
category = c(rep("A", 10), rep("B", 15))
data = data.frame(category, interval, value)
数据将包含三列:一个带有分类变量的因子列,一个名为&#34的列; interval"编码时间和"值"包含因变量。这些都表达了每个观察的属性,属于"类别"并且"值"通过时间("间隔")。
category | interval | value; A 1 1.0 A 2 2.3 A 3 0.5 A 4 0.9 B 1 1.5 B 2 1.2 B 3 0.4 ...
现在,我想将每个观察结果提取到一个包含两列的txt文件
interval | file.number 1 1.0 2 2.3 3 0.5 ...
并在单独的txt文件中编码元数据
category | file.number A 1 A 2 A 3 B 4 B 5 B 6 ...
答案 0 :(得分:1)
您有机会试用mapply
:
df <- read.table(text ="category interval value
A 1 1.0
A 2 2.3
A 3 0.5
A 4 0.9
B 1 1.5
B 2 1.2
B 3 0.4", header = T)
l <- split(df, df$interval)
#' Function writes interval data to csv
#'
#' @return metadata about written records
writeIntervalData <- function(df, i) {
write.csv(df, paste0("file", i, ".csv", row.names <- FALSE))
meta <- data.frame(category = unique(df$category))
meta$file <- i
return(meta)
}
meta <- mapply(writeIntervalData, l, names(l), SIMPLIFY = FALSE)
meta <- do.call("rbind", meta)
write.csv(meta[order(meta$category, meta$file),], "meta.csv", row.names = FALSE)