У меня есть dataframe (dtetags.df) со столбцом даты, которая имеет много дубликатов даты:Ошибка при консолидации, как строки с plyr - что я делаю неправильно?
dtetags.df$Date
"2016-07-22" "2016-07-22" "2016-07-21" "2016-07-21" "2016-07-20" "2016-07-20" "2016-07-19" "2016-07-19" "2016-07-18" "2016-07-18" "2016-07-15" "2016-07-15" "2016-07-15" "2016-07-14"
"2016-07-14" "2016-07-13" "2016-07-13" "2016-07-13" "2016-07-12" "2016-07-12" "2016-07-12" "2016-07-12" "2016-07-11" "2016-07-11" "2016-07-11" "2016-07-11" "2016-07-08" "2016-07-08"
"2016-07-08" "2016-07-07" "2016-07-07" "2016-07-07" "2016-07-07" "2016-07-06" "2016-07-06" "2016-07-05" "2016-07-05" "2016-07-05" "2016-07-05" "2016-07-01" "2016-07-01" "2016-06-30"
"2016-06-30" "2016-06-29" "2016-06-29" "2016-06-29" "2016-06-29" "2016-06-29" "2016-06-28" "2016-06-28" "2016-06-28" "2016-06-27" "2016-06-27" "2016-06-27" "2016-06-24" "2016-06-24"
"2016-06-23" "2016-06-23" "2016-06-22" "2016-06-22" "2016-06-21" "2016-06-21" "2016-06-20" "2016-06-20" "2016-06-17" "2016-06-17" "2016-06-16" "2016-06-16" "2016-06-15" "2016-06-15"
"2016-06-14" "2016-06-13" "2016-06-13" "2016-06-10" "2016-06-10" "2016-06-09" "2016-06-09" "2016-06-09" "2016-06-09" "2016-06-08" "2016-06-08" "2016-06-07" "2016-06-07" "2016-06-06"
"2016-06-06" "2016-06-06" "2016-06-01" "2016-06-01" "2016-05-29" "2016-05-29" "2016-05-27" "2016-05-27" "2016-05-26" "2016-05-26" "2016-05-25" "2016-05-25" "2016-05-24" "2016-05-23"
"2016-05-23" "2016-05-20"
и число двоичных столбцов тегов, которые показывают, была ли запись сделана с этой меткой на эту дату, для пример:
dtetags.df$Technology
"0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "1" "0" "0" "0" "0" "1" "1" "0" "1" "0" "1"
"0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "1" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "1" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0" "0"
"0" "0" "0" "0" "0" "0" "0" "0" "0" "0"
, и я пытаюсь использовать ddply(dtetags.df,"Date",numcolwise(sum))
основанный на this question но он возвращает сообщение об ошибке <0 rows> (or 0-length row.names)
. Я пробовал несколько разных способов форматировать команду ddply, но я не могу заставить ее работать.
Идеальный выход будет выглядеть так:
Date Technology
1 2016-07-22 0
2 2016-07-21 0
3 2016-07-20 0
4 2016-07-19 0
5 2016-07-18 0
6 2016-07-15 0
7 2016-07-14 0
8 2016-07-13 0
9 2016-07-12 0
10 2016-07-11 0
11 2016-07-08 0
12 2016-07-07 0
13 2016-07-06 1
14 2016-07-05 0
15 2016-07-01 2
16 2016-06-30 1
17 2016-06-29 1
18 2016-06-28 0
19 2016-06-27 0
20 2016-06-24 1
21 2016-06-23 0
22 2016-06-22 0
23 2016-06-21 0
24 2016-06-20 0
25 2016-06-17 0
26 2016-06-16 0
27 2016-06-15 0
28 2016-06-14 1
29 2016-06-13 0
30 2016-06-10 0
31 2016-06-09 0
32 2016-06-08 0
33 2016-06-07 0
34 2016-06-06 0
35 2016-06-01 0
36 2016-05-29 0
37 2016-05-27 0
38 2016-05-26 0
39 2016-05-25 0
40 2016-05-24 0
41 2016-05-23 0
42 2016-05-20 0
Есть ли что-то очевидно, что я делаю неправильно?
Преобразование фактор в числовой
Я удалил столбец Date, применяется data.frame(apply(dtetags.df, 2, function(x) as.numeric(as.character(x))))
к остальной части кадра данных, и предваряется столбца Дата обратно.
dput(dtetags.df)
structure(list(Date = c("2016-07-22", "2016-07-22", "2016-07-21",
"2016-07-21", "2016-07-20", "2016-07-20", "2016-07-19", "2016-07-19",
"2016-07-18", "2016-07-18", "2016-07-15", "2016-07-15", "2016-07-15",
"2016-07-14", "2016-07-14", "2016-07-13", "2016-07-13", "2016-07-13",
"2016-07-12", "2016-07-12", "2016-07-12", "2016-07-12", "2016-07-11",
"2016-07-11", "2016-07-11", "2016-07-11", "2016-07-08", "2016-07-08",
"2016-07-08", "2016-07-07", "2016-07-07", "2016-07-07", "2016-07-07",
"2016-07-06", "2016-07-06", "2016-07-05", "2016-07-05", "2016-07-05",
"2016-07-05", "2016-07-01", "2016-07-01", "2016-06-30", "2016-06-30",
"2016-06-29", "2016-06-29", "2016-06-29", "2016-06-29", "2016-06-29",
"2016-06-28", "2016-06-28", "2016-06-28", "2016-06-27", "2016-06-27",
"2016-06-27", "2016-06-24", "2016-06-24", "2016-06-23", "2016-06-23",
"2016-06-22", "2016-06-22", "2016-06-21", "2016-06-21", "2016-06-20",
"2016-06-20", "2016-06-17", "2016-06-17", "2016-06-16", "2016-06-16",
"2016-06-15", "2016-06-15", "2016-06-14", "2016-06-13", "2016-06-13",
"2016-06-10", "2016-06-10", "2016-06-09", "2016-06-09", "2016-06-09",
"2016-06-09", "2016-06-08", "2016-06-08", "2016-06-07", "2016-06-07",
"2016-06-06", "2016-06-06", "2016-06-06", "2016-06-01", "2016-06-01",
"2016-05-29", "2016-05-29", "2016-05-27", "2016-05-27", "2016-05-26",
"2016-05-26", "2016-05-25", "2016-05-25", "2016-05-24", "2016-05-23",
"2016-05-23", "2016-05-20"), `Technology` = c(0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), .Names = c("Date",
"Technology"), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -100L))
Просьба показать воспроизводимый небольшой пример с использованием 'dput' и ожидаемого вывода – akrun
. Ваш ввод и ожидаемый результат, похоже, имеют разные значения. Возможно, 'library (dplyr); dtetags.df%>% group_by (Date)%>% mutate (new = row_number() * as.numeric (as.character (Technology)))' – akrun
Есть ли обобщаемое решение? Это то, что я пытался сделать, не указав столбец. Кроме того, я немного смущен о том, что вы имеете в виду о разных входах/выходах. Благодаря! – arebearit