我无法rle
在data.frame
. 函数在另一组上效果很好:
fgroup <- aggregate(fevents2[,3:14], list(weeks = fevents2[, 1]), function(x) rle(x)$values)
这会产生错误:
Error in rle(x) : 'x' must be an atomic vector
样本数据:
> dput(fevents2[1:20,])
structure(list(weeks = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("1",
"2", "3", "4", "5", "6", "7"), class = "factor"), A1M.Date = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L), .Label = c("2012-05-09", "2012-05-10", "2012-05-11",
"2012-05-14", "2012-05-15", "2012-05-17", "2012-05-18", "2012-05-21",
"2012-05-22", "2012-05-24", "2012-05-25", "2012-05-28", "2012-05-29",
"2012-05-30", "2012-05-31", "2012-06-04", "2012-06-05", "2012-06-07",
"2012-06-08", "2012-06-11", "2012-06-12", "2012-06-14", "2012-06-15",
"2012-06-18", "2012-06-19", "2012-06-21", "2012-06-22"), class = "factor"),
vv = structure(c(8L, 8L, 8L, 20L, 24L, 24L, 24L, 1L, 13L,
13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 24L), .Label = c("C AA",
"C AJ", "C BB", "C BV", "C JA", "C JR", "C RJ", "C RR", "C RV",
"C VB", "C VR", "C VV", "G AA", "G AJ", "G BB", "G BV", "G JA",
"G JR", "G RJ", "G RR", "G RV", "G VB", "G VR", "nil"), class = "factor"),
rv = structure(c(25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L,
10L, 10L, 22L, 22L, 22L, 25L, 10L, 22L, 22L, 22L, 22L, 25L
), .Label = c("C AA", "C AJ", "C BB", "C BV", "C JA", "C JR",
"C RJ", "C RR", "C RV", "C VB", "C VR", "C VV", "G AA", "G AJ",
"G BB", "G BV", "G JA", "G JR", "G RJ", "G RR", "G RV", "G VB",
"G VR", "G VV", "nil"), class = "factor"), ja = structure(c(12L,
12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 25L, 25L,
12L, 24L, 24L, 24L, 24L, 24L, 24L), .Label = c("C AA", "C AJ",
"C BB", "C BV", "C JA", "C JR", "C RJ", "C RR", "C RV", "C VB",
"C VR", "C VV", "G AA", "G AJ", "G BB", "G BV", "G JA", "G JR",
"G RJ", "G RR", "G RV", "G VB", "G VR", "G VV", "nil"), class = "factor"),
aa = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 25L, 25L,
25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L), .Label = c("C AA",
"C AJ", "C BB", "C BV", "C JA", "C JR", "C RJ", "C RR", "C RV",
"C VB", "C VR", "C VV", "G AA", "G AJ", "G BB", "G BV", "G JA",
"G JR", "G RJ", "G RR", "G RV", "G VB", "G VR", "G VV", "nil"
), class = "factor"), bv = structure(c(25L, 11L, 11L, 11L,
23L, 23L, 23L, 23L, 23L, 23L, 23L, 23L, 23L, 23L, 23L, 23L,
23L, 23L, 23L, 23L), .Label = c("C AA", "C AJ", "C BB", "C BV",
"C JA", "C JR", "C RJ", "C RR", "C RV", "C VB", "C VR", "C VV",
"G AA", "G AJ", "G BB", "G BV", "G JA", "G JR", "G RJ", "G RR",
"G RV", "G VB", "G VR", "G VV", "nil"), class = "factor"),
aj = structure(c(7L, 7L, 7L, 25L, 25L, 25L, 25L, 25L, 9L,
9L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 21L, 25L, 25L), .Label = c("C AA",
"C AJ", "C BB", "C BV", "C JA", "C JR", "C RJ", "C RR", "C RV",
"C VB", "C VR", "C VV", "G AA", "G AJ", "G BB", "G BV", "G JA",
"G JR", "G RJ", "G RR", "G RV", "G VB", "G VR", "G VV", "nil"
), class = "factor"), vb = structure(c(1L, 1L, 1L, 25L, 25L,
25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 2L,
25L, 2L, 2L), .Label = c("C AA", "C AJ", "C BB", "C BV",
"C JA", "C JR", "C RJ", "C RR", "C RV", "C VB", "C VR", "C VV",
"G AA", "G AJ", "G BB", "G BV", "G JA", "G JR", "G RJ", "G RR",
"G RV", "G VB", "G VR", "G VV", "nil"), class = "factor"),
rj = structure(c(5L, 5L, 16L, 16L, 16L, 16L, 16L, 16L, 16L,
16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L), .Label = c("C AA",
"C AJ", "C BB", "C BV", "C JR", "C RJ", "C RR", "C RV", "C VB",
"C VR", "C VV", "G AA", "G AJ", "G BB", "G BV", "G JR", "G RJ",
"G RR", "G RV", "G VB", "G VR", "G VV", "nil"), class = "factor"),
rr = structure(c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("C AA",
"C AJ", "C BB", "C BV", "C JA", "C JR", "C RJ", "C RR", "C RV",
"C VB", "C VR", "C VV", "G AA", "G AJ", "G BB", "G BV", "G JA",
"G JR", "G RJ", "G RR", "G RV", "G VB", "G VR", "G VV", "nil"
), class = "factor"), vr = structure(c(5L, 5L, 5L, 25L, 25L,
7L, 7L, 7L, 7L, 7L, 25L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L), .Label = c("C AA", "C AJ", "C BB", "C BV", "C JA", "C JR",
"C RJ", "C RR", "C RV", "C VB", "C VR", "C VV", "G AA", "G AJ",
"G BB", "G BV", "G JA", "G JR", "G RJ", "G RR", "G RV", "G VB",
"G VR", "G VV", "nil"), class = "factor"), bb = structure(c(4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L), .Label = c("C AA", "C AJ", "C BB", "C BV",
"C JA", "C JR", "C RJ", "C RR", "C RV", "C VB", "C VR", "C VV",
"G AA", "G AJ", "G BB", "G BV", "G JA", "G RJ", "G RR", "G RV",
"G VB", "G VR", "G VV", "nil"), class = "factor"), jr = structure(c(25L,
25L, 10L, 10L, 22L, 22L, 25L, 25L, 25L, 25L, 25L, 25L, 25L,
25L, 25L, 25L, 5L, 5L, 5L, 5L), .Label = c("C AA", "C AJ",
"C BB", "C BV", "C JA", "C JR", "C RJ", "C RR", "C RV", "C VB",
"C VR", "C VV", "G AA", "G AJ", "G BB", "G BV", "G JA", "G JR",
"G RJ", "G RR", "G RV", "G VB", "G VR", "G VV", "nil"), class = "factor")),
.Names = c("weeks",
"A1M.Date", "vv", "rv", "ja", "aa", "bv", "aj", "vb", "rj", "rr",
"vr", "bb", "jr"), row.names = c(NA, 20L), class = "data.frame")
数据结构:
str(fevents2)
data.frame': 1430 obs. of 14 variables:
$ weeks : Factor w/ 7 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 1 1 ...
$ A1M.Date: Factor w/ 27 levels "2012-05-09","2012-05-10",..: 1 1 1 1 1 1 1 1 1 1 ...
$ vv : Factor w/ 24 levels "C AA","C AJ",..: 8 8 8 20 24 24 24 1 13 13 ..
$ rv : Factor w/ 25 levels "C AA","C AJ",..: 25 25 25 25 25 25 25 25 10 10 ...
$ ja : Factor w/ 25 levels "C AA","C AJ",..: 12 12 12 12 12 12 12 12 12 12 ...
$ aa : Factor w/ 25 levels "C AA","C AJ",..: 2 2 2 2 2 2 2 2 25 25 ...
$ bv : Factor w/ 25 levels "C AA","C AJ",..: 25 11 11 11 23 23 23 23 23 23 ...
$ aj : Factor w/ 25 levels "C AA","C AJ",..: 7 7 7 25 25 25 25 25 9 9 ...
$ vb : Factor w/ 25 levels "C AA","C AJ",..: 1 1 1 25 25 25 25 25 25 25 ...
$ rj : Factor w/ 23 levels "C AA","C AJ",..: 5 5 16 16 16 16 16 16 16 16 ...
$ rr : Factor w/ 25 levels "C AA","C AJ",..: 3 3 3 3 3 3 3 3 3 3 ...
$ vr : Factor w/ 25 levels "C AA","C AJ",..: 5 5 5 25 25 7 7 7 7 7 ...
$ bb : Factor w/ 24 levels "C AA","C AJ",..: 4 4 4 4 4 4 4 4 4 4 ...
$ jr : Factor w/ 25 levels "C AA","C AJ",..: 25 25 10 10 22 22 25 25 25 25 ...
NULL
我知道我有factor
s,但将factor
s 转换为numeric
with
as.numeric(as.character(fevents2))
或者:
sapply(fevents2, function(x) as.numeric(as.character(x)))
不能解决我的问题:
Error in fevents3[, 3:14] : incorrect number of dimensions
In addition: Warning message:
In eval.with.vis(expr, envir, enclos) : NAs introduced by coercion
data.frame
这是该rle
函数工作的示例:
dput(fevents[1:20,]
structure(list(weeks = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1), A1M.Date = c("2012-05-09", "2012-05-09",
"2012-05-09", "2012-05-09", "2012-05-09", "2012-05-09", "2012-05-09",
"2012-05-09", "2012-05-09", "2012-05-09", "2012-05-09", "2012-05-09",
"2012-05-09", "2012-05-09", "2012-05-09", "2012-05-09", "2012-05-09",
"2012-05-09", "2012-05-09", "2012-05-09"), vv = c("C RR", "C RR",
"C RR", "G RR", "nil", "nil", "nil", "C AA", "G AA", "G AA",
"G AA", "G AA", "G AA", "G AA", "G AA", "G AA", "G AA", "G AA",
"G AA", "nil"), rv = c("nil", "nil", "nil", "nil", "nil", "nil",
"nil", "nil", "C VB", "C VB", "G VB", "G VB", "G VB", "nil",
"G VB", "G VB", "G VB", "G VB", "G VB", "nil"), ja = c("C VV",
"C VV", "C VV", "C VV", "C VV", "C VV", "C VV", "C VV", "C VV",
"C VV", "C VV", "nil", "nil", "G VV", "G VV", "G VV", "G VV",
"G VV", "G VV", "G VV"), aa = c("C AJ", "C AJ", "C AJ", "C AJ",
"C AJ", "C AJ", "C AJ", "C AJ", "nil", "nil", "nil", "nil", "nil",
"nil", "nil", "nil", "nil", "nil", "nil", "nil"), bv = c("nil",
"C VR", "C VR", "C VR", "G VR", "G VR", "G VR", "G VR", "G VR",
"G VR", "G VR", "G VR", "G VR", "G VR", "G VR", "G VR", "G VR",
"G VR", "G VR", "G VR"), aj = c("C RJ", "C RJ", "C RJ", "nil",
"nil", "nil", "nil", "nil", "C RV", "C RV", "G RV", "G RV", "G RV",
"G RV", "G RV", "G RV", "G RV", "G RV", "nil", "nil"), vb = c("C AA",
"C AA", "C AA", "nil", "nil", "nil", "nil", "nil", "nil", "nil",
"nil", "nil", "nil", "nil", "nil", "nil", "C AJ", "nil", "C AJ",
"C AJ"), rj = c("C JR", "C JR", "G JR", "G JR", "G JR", "G JR",
"G JR", "G JR", "G JR", "G JR", "G JR", "G JR", "G JR", "G JR",
"G JR", "G JR", "G JR", "G JR", "G JR", "G JR"), rr = c("C BB",
"C BB", "C BB", "C BB", "C BB", "C BB", "C BB", "C BB", "C BB",
"C BB", "C BB", "C BB", "C BB", "C BB", "C BB", "C BB", "C BB",
"C BB", "C BB", "C BB"), vr = c("C JA", "C JA", "C JA", "nil",
"nil", "C RJ", "C RJ", "C RJ", "C RJ", "C RJ", "nil", "C RJ",
"C RJ", "C RJ", "C RJ", "C RJ", "C RJ", "C RJ", "C RJ", "C RJ"
), bb = c("C BV", "C BV", "C BV", "C BV", "C BV", "C BV", "C BV",
"C BV", "C BV", "C BV", "C BV", "C BV", "C BV", "C BV", "C BV",
"C BV", "C BV", "C BV", "C BV", "C BV"), jr = c("nil", "nil",
"C VB", "C VB", "G VB", "G VB", "nil", "nil", "nil", "nil", "nil",
"nil", "nil", "nil", "nil", "nil", "C JA", "C JA", "C JA", "C JA"
)), .Names = c("weeks", "A1M.Date", "vv", "rv", "ja", "aa", "bv",
"aj", "vb", "rj", "rr", "vr", "bb", "jr"), row.names = c(NA,
20L), class = "data.frame")
str(fevents)
'data.frame': 1430 obs. of 14 variables:
$ weeks : num 1 1 1 1 1 1 1 1 1 1 ...
$ A1M.Date: chr "2012-05-09" "2012-05-09" "2012-05-09" "2012-05-09" ...
$ vv : chr "C RR" "C RR" "C RR" "G RR" ...
$ rv : chr "nil" "nil" "nil" "nil" ...
$ ja : chr "C VV" "C VV" "C VV" "C VV" ...
$ aa : chr "C AJ" "C AJ" "C AJ" "C AJ" ...
$ bv : chr "nil" "C VR" "C VR" "C VR" ...
$ aj : chr "C RJ" "C RJ" "C RJ" "nil" ...
$ vb : chr "C AA" "C AA" "C AA" "nil" ...
$ rj : chr "C JR" "C JR" "G JR" "G JR" ...
$ rr : chr "C BB" "C BB" "C BB" "C BB" ...
$ vr : chr "C JA" "C JA" "C JA" "nil" ...
$ bb : chr "C BV" "C BV" "C BV" "C BV" ...
$ jr : chr "nil" "nil" "C VB" "C VB" ...
我发现了一个非常“不优雅”的解决方法。data.frame
以 CSV 格式写入文件并使用stringsAsFactors = FALSE
. 这不是我想在我的代码中写的......必须有一种更简单的方法来重新排列的结构data.frame
来取悦rle
?