Я пытаюсь условно заменить некоторые поля в кадре данных;тем не менее, мой код находит около 25% фактических присутствующих экземпляров.Я искал другие вопросы условного поиска, но не нашел ничего соответствующего моей проблеме - заранее прошу прощения, если пропустил один.
В частности, я пытаюсь заменить все числа от 1 до 9 в dta $ day на a to i.
Вот первые 100 элементов в этом векторе: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 2 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2526 27 28 29 30 31 1 2 3 4 5 6 7 8 9
Когда я условно ищу значения от 1 до 9, используя:
dta$day == c("1","2","3","4","5","6","7","8","9")
В нем говорится, что только первый и последнийустановить в этой группе соответствие моего состояния, как показано ниже (я выделил жирным шрифтом ~ что должно быть ИСТИНА для вашей справки):
[1] **TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE** FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[17] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE **FALSE**
[33] **FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE** FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[49] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE **FALSE FALSE**
[65] **FALSE FALSE FALSE FALSE FALSE FALSE FALSE** FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[81] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE **TRUE TRUE TRUE TRUE TRUE TRUE**
[97] **TRUE TRUE TRUE**
Проблема должна быть на этом первом шаге, но чтобы показать вам результат, толькопервый и последний набор в этих первых 100 в моем векторе соответственно заменяются после применения этого кода:
dta[dta$day == c("1","2","3","4","5","6","7","8","9"),1
] <- c("a", "b", "c", "d", "e", "f", "g", "h", "i")
[1] **"a" "b" "c" "d" "e" "f" "g" "h" "i"** "10" "11" "12" "13" "14" "15" "16" "17" "18" "19"
[20] "20" "21" "22" "23" "24" "25" "26" "27" "28" "29" "30" "31" **"1" "2" "3" "4" "5" "6" "7"**
[39] "8" "9" "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26"
[58] "27" "28" **"1" "2" "3" "4" "5" "6" "7" "8" "9" "10"** "11" "12" "13" "14" "15" "16" "17"
[77] "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28" "29" "30" "31" **"a" "b" "c" "d" "e"
[96] "f" "g" "h" "i"**
Если это полезно, вот начальное состояние этого вектора:
is.numeric(dta$day)
[1] TRUE
summary(dta$day)
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.00 8.00 16.00 15.73 23.00 31.00
Я воспроизводю кадр данных здесь:
day <- c(1:31,1:28,1:31,1:30)
month <- c(rep_len(1,31),rep_len(2,28),rep_len(3,31),rep_len(4,30))
temp <- rnorm(length(month),10,10)
dta=as.data.frame(cbind(day,month,temp))
И на самом деле, хотя я могу воспроизвести проблему с этим примером игрушки, я получаю предупреждение, что яне соглашайтесь с моими фактическими данными (не воспроизводимыми здесь, потому что они очень большие): «длинная длина объекта не кратна короткой длине объекта».
Я хотел бы получить некоторую помощь, и если бы я этого не сделалпредоставьте что-нибудь или не сделали этого в необходимом формате, пожалуйста, дайте мне знать!