Ggplot-тен NA-ді жою

Мен мұнда өте қарапайым сұрақ туындаймын, өйткені мен тек R-ды қолдануға кірісемін, бірақ мен ggplot2-де фактор сандарын құруға тырысамын және менің жоспарымды жасағанда, менің нақты деңгейімді білдіретін 14 кішкентай түсті блифтерді, ал содан кейін үлгідегі 5000-жұмыс НС-ны білдіретін (бұл үлгідегі шамамен 5% -ке ғана қатысты сұрақтың сауалнамасы). Мен келесі кодты қолданбай көрдім:

ggplot(data = MyData,aes(x= the_variable, fill=the_variable, na.rm = TRUE)) + 
   geom_bar(stat="bin") 

Мұнда na.rm дәлелін қосу ешқандай әсер етпейді.

Сонымен қатар

ggplot(data = na.omit(MyData),aes(x= the_variable, fill=the_variable, na.rm = TRUE)) + 
   geom_bar(stat="bin") 

маған береді

«Қате: эстетика ұзындығы немесе деректермен бірдей ұзындық болуы керек»

na.omit() деп аталатын the_variable немесе MyData және the_variable екеуіне де қосылады.

Жалғастырғым келетін нәрсе менің графигімнен алып бара жатқан NA штабын алып тастайды, біреу маған мұны істеуге көмектесе алады ма?

15
Деректеріңіз болмаса, көмектесу мүмкін емес. Біз іс жүзінде іске қосуға болатын шағын мысалы ұсынуыңыз қажет, сондықтан сіз нақты деректер құрылымын қарастыра аламыз.
қосылды автор joran, көзі
Ол толтыру айнымалысын жай ғана рефакторландыру үшін жұмыс істей ме? fill = фактор (the_variable)
қосылды автор Fr., көзі
Ол толтыру айнымалысын жай ғана рефакторландыру үшін жұмыс істей ме? fill = фактор (the_variable)
қосылды автор Fr., көзі
Деректеріңізді көрмей-ақ, сызбалық мақсаттар үшін ғана NA-нен тыс мәндермен төменгі жиындарға қол жеткізе аласыз. Ie MyData.sub <- MyData [! Is.na (MyData)] , содан кейін ғана подмножествуют. Мен жиі нөлдерді алып тастау үшін бірдей нәрсе жасаймын.
қосылды автор dayne, көзі
Деректеріңізді көрмей-ақ, сызбалық мақсаттар үшін ғана NA-нен тыс мәндермен төменгі жиындарға қол жеткізе аласыз. Ie MyData.sub <- MyData [! Is.na (MyData)] , содан кейін ғана подмножествуют. Мен жиі нөлдерді алып тастау үшін бірдей нәрсе жасаймын.
қосылды автор dayne, көзі

9 жауаптар

ggplot2 ішіндегі subset функциясын пайдалануға болады. Мұны көріңіз

library(ggplot2)

data("iris")
iris$Sepal.Length[5:10] <- NA # create some NAs for this example

ggplot(data=subset(iris, !is.na(Sepal.Length)), aes(x=Sepal.Length)) + 
geom_bar(stat="bin")
21
қосылды
@ikashnitsky Ал үстелге рахмет. hasNAs бағаны өте пайдалы болар еді :)
қосылды автор Victor Ordu, көзі
енді ол жасайды. Көңілдер үшін алғыс :)
қосылды автор rafa.pereira, көзі
@mad Егер сіз екі бағанмен сюжетті құрсаңыз, екеуінде де NA мәнін жойыңыз. Мысалы: subset (iris,! Is.na (Sepal.Length & Sepal.Width))
қосылды автор rafa.pereira, көзі
Ха! Бұл түсініктеме берудің жақсы тәсілі)) Менің ойымша, кез келген жағдайда жақсы сәйкес деректер жиынтығы бар R салынғандардан
қосылды автор ikashnitsky, көзі
Өкінішке орай, iris ешқандай NAs жоқ.)
қосылды автор ikashnitsky, көзі
Мен оны деректер жиынтығым үшін жасадым және графикте әлі де NA бар ...
қосылды автор mad, көзі

ggplot2 ішіндегі subset функциясын пайдалануға болады. Мұны көріңіз

library(ggplot2)

data("iris")
iris$Sepal.Length[5:10] <- NA # create some NAs for this example

ggplot(data=subset(iris, !is.na(Sepal.Length)), aes(x=Sepal.Length)) + 
geom_bar(stat="bin")
21
қосылды
@ikashnitsky Ал үстелге рахмет. hasNAs бағаны өте пайдалы болар еді :)
қосылды автор Victor Ordu, көзі
енді ол жасайды. Көңілдер үшін алғыс :)
қосылды автор rafa.pereira, көзі
@mad Егер сіз екі бағанмен сюжетті құрсаңыз, екеуінде де NA мәнін жойыңыз. Мысалы: subset (iris,! Is.na (Sepal.Length & Sepal.Width))
қосылды автор rafa.pereira, көзі
Ха! Бұл түсініктеме берудің жақсы тәсілі)) Менің ойымша, кез келген жағдайда жақсы сәйкес деректер жиынтығы бар R салынғандардан
қосылды автор ikashnitsky, көзі
Өкінішке орай, iris ешқандай NAs жоқ.)
қосылды автор ikashnitsky, көзі
Мен оны деректер жиынтығым үшін жасадым және графикте әлі де NA бар ...
қосылды автор mad, көзі

Тек @ rafa.pereira жауапына жаңарту. ggplot2 tidyverse құрамдас бөлігі болғандықтан, NAs-ден құтылу үшін ыңғайлы кідіріс функцияларын қолдануға болады.

library(tidyverse)
airquality %>% 
        drop_na(Ozone) %>%
        ggplot(aes(x = Ozone))+
        geom_bar(stat="bin")

Сонымен қатар, сіз drop_na() бағандарының сипаттамаларынсыз пайдалана аласыз; онда кез келген бағандағы NA бар барлық жолдар жойылады.

6
қосылды
Бұл мен үшін проблеманы шешті!
қосылды автор Victor Ordu, көзі

Тек @ rafa.pereira жауапына жаңарту. ggplot2 tidyverse құрамдас бөлігі болғандықтан, NAs-ден құтылу үшін ыңғайлы кідіріс функцияларын қолдануға болады.

library(tidyverse)
airquality %>% 
        drop_na(Ozone) %>%
        ggplot(aes(x = Ozone))+
        geom_bar(stat="bin")

Сонымен қатар, сіз drop_na() бағандарының сипаттамаларынсыз пайдалана аласыз; онда кез келген бағандағы NA бар барлық жолдар жойылады.

6
қосылды
Бұл мен үшін проблеманы шешті!
қосылды автор Victor Ordu, көзі

Мәселені шешкеніңізге сенімді емеспіз. Бұл мәселе үшін сіз «сүзгі» функциясын пакет құрамында қолдануға болады. Бұл идея мүдделеріңіздің ауыспалы мәндері NA болып табылмайтын бақылауларды/жолдарды сүзгілеу болып табылады. Содан кейін сіз осы сүзгіден өткізілген бақылаулармен график жасайсыз. Төмендегі кодтарымды таба аласыз және деректер ауқымының және айнымалы мәнінің барлық атауы сұрағыңызға жауап беруден көшіріледі. Сондай-ақ, сіз құбыр операторларын білесіз.

library(tidyverse) 

MyDate %>%
   filter(!is.na(the_variable)) %>%
     ggplot(aes(x= the_variable, fill=the_variable)) + 
        geom_bar(stat="bin") 

Сіз өзіңіздің алаңыңызға тітіркендіретін НҚ-ны алып тастай аласыз. Бұл жұмыс істейді деп үміттенемін :)

3
қосылды
Рахмет, Грегор. Мен кодты бекіттім.
қосылды автор Jay Chieh Kao, көзі

Сонымен қатар, сіздің geom_bar() қызметіне na.rm = TRUE қосылады.

ggplot(data = MyData,aes(x= the_variable, fill=the_variable, na.rm = TRUE)) + 
   geom_bar(stat="bin", na.rm = TRUE)

Мен осы мәселеге уақытша сериядағы циклмен жүгірдім және бұл оны анықтады. Жетіспеген деректер жойылып, нәтижелер басқаша орындалмады.

2
қосылды

Оның орнына vars = the_variable деген remove_missing түрін қолданып көріңіз. vars дәлелін орнатқаныңыз өте маңызды, әйтпесе remove_missing кез келген бағанда NA бар барлық жолдарды алып тастайды !! na.rm = TRUE параметрін орнату ескерту хабарын тоқтатады.

ggplot(data = remove_missing(MyData, na.rm = TRUE, vars = the_variable),aes(x= the_variable, fill=the_variable, na.rm = TRUE)) + 
       geom_bar(stat="bin") 
0
қосылды

Менің көзқарасым бойынша бұл қате «Қате: эстетика ұзындығы немесе деректермен бірдей ұзындық болуы керек» aes (x, y) дәлелін білдіреді, Na.omit() мен көріңіз және маған жақсы жұмыс істеді.

0
қосылды

Менің көзқарасым бойынша бұл қате «Қате: эстетика ұзындығы немесе деректермен бірдей ұзындық болуы керек» aes (x, y) дәлелін білдіреді, Na.omit() мен көріңіз және маған жақсы жұмыс істеді.

0
қосылды