티스토리 뷰

Manipulating Data in R with the Tidyverse

Manipulating Data in R with the Tidyverse.

<출처>

https://www.kaggle.com/rtatman/manipulating-data-with-the-tidyverse/notebook (Manipulating Data with the Tidyverse, Rachael Tatman)

https://www.kaggle.com/crawford/agricultural-survey-of-african-farm-households (dataset: Agricultural Survey of African Farm Households)

https://www.tidyverse.org/ (Tidyverse)

https://github.com/tidyverse/magrittr (magrittr)

https://github.com/tidyverse/dplyr (dplyr)


<함께보기>

Manipulating Data in Python3 with the Pandas


Loading Tidyverse

In [1]:
#install.packages("tidyverse")
require(tidyverse)
Loading required package: tidyverse
─ Attaching packages ──────────────────── tidyverse 1.2.1 ─
✔ ggplot2 2.2.1     ✔ purrr   0.2.4
✔ tibble  1.4.2     ✔ dplyr   0.7.4
✔ tidyr   0.8.0     ✔ stringr 1.3.0
✔ readr   1.1.1     ✔ forcats 0.3.0
─ Conflicts ───────────────────── tidyverse_conflicts() ─
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()

Reading a data set

In [2]:
farmdata <- read_csv("../datasets/data.csv")
Warning message:
“Missing column names filled in: 'X1' [1]”Parsed with column specification:
cols(
  .default = col_double(),
  X1 = col_integer(),
  hhcode = col_integer(),
  adm0 = col_character(),
  adm1 = col_character(),
  adm2 = col_character(),
  cadm0 = col_integer(),
  cadm1 = col_integer(),
  code = col_integer(),
  build2use4 = col_character(),
  build2use5 = col_character(),
  build3use3 = col_character(),
  build3use4 = col_character(),
  build3use5 = col_character(),
  harvhhc3 = col_character(),
  harvhhcd3 = col_character(),
  harvhhf3 = col_character(),
  harvhhfd3 = col_character(),
  harvhhm3 = col_character(),
  harvhhmd3 = col_character(),
  harvhrc3 = col_character()
  # ... with 685 more columns
)
See spec(...) for full column specifications.
Warning message in rbind(names(probs), probs_f):
“number of columns of result is not a multiple of vector length (arg 1)”Warning message:
“1707 parsing failures.
row # A tibble: 5 x 5 col     row col    expected   actual        file                   expected   <int> <chr>  <chr>      <chr>         <chr>                  actual 1  1321 ad7121 an integer intercropping '../datasets/data.csv' file 2  1321 ad7521 an integer intercropping '../datasets/data.csv' row 3  1471 ad7121 an integer no change     '../datasets/data.csv' col 4  2703 ad7121 an integer .             '../datasets/data.csv' expected 5  2703 ad7211 an integer .             '../datasets/data.csv'
... ................. ... .............................................................. ........ .............................................................. ...... .............................................................. .... .............................................................. ... .............................................................. ... .............................................................. ........ ..............................................................
See problems(...) for more details.
”
In [3]:
class(farmdata)
  1. 'tbl_df'
  2. 'tbl'
  3. 'data.frame'
In [4]:
problems(farmdata)
rowcolexpectedactualfile
1321 ad7121 an integer intercropping '../datasets/data.csv'
1321 ad7521 an integer intercropping '../datasets/data.csv'
1471 ad7121 an integer no change '../datasets/data.csv'
2703 ad7121 an integer . '../datasets/data.csv'
2703 ad7211 an integer . '../datasets/data.csv'
2703 ad7521 an integer . '../datasets/data.csv'
2703 ad7624 an integer . '../datasets/data.csv'
2740 ad7121 an integer . '../datasets/data.csv'
2740 ad7211 an integer . '../datasets/data.csv'
2740 ad7521 an integer . '../datasets/data.csv'
2740 ad7624 an integer . '../datasets/data.csv'
2747 ad7121 an integer . '../datasets/data.csv'
2747 ad7211 an integer . '../datasets/data.csv'
3498 ad7121 an integer . '../datasets/data.csv'
3498 ad7211 an integer . '../datasets/data.csv'
3498 ad7521 an integer . '../datasets/data.csv'
3498 ad7624 an integer . '../datasets/data.csv'
3503 ad7121 an integer . '../datasets/data.csv'
3503 ad7211 an integer . '../datasets/data.csv'
3503 ad7521 an integer . '../datasets/data.csv'
3503 ad7624 an integer . '../datasets/data.csv'
3504 ad7121 an integer . '../datasets/data.csv'
3504 ad7211 an integer . '../datasets/data.csv'
3504 ad7521 an integer . '../datasets/data.csv'
3504 ad7624 an integer . '../datasets/data.csv'
3505 ad7121 an integer . '../datasets/data.csv'
3505 ad7211 an integer . '../datasets/data.csv'
3505 ad7521 an integer . '../datasets/data.csv'
3505 ad7624 an integer . '../datasets/data.csv'
3508 ad7121 an integer . '../datasets/data.csv'
9579 ad7521 an integer . '../datasets/data.csv'
9581 ad7121 an integer . '../datasets/data.csv'
9581 ad7521 an integer . '../datasets/data.csv'
9582 ad7121 an integer . '../datasets/data.csv'
9582 ad7521 an integer . '../datasets/data.csv'
9583 ad7121 an integer . '../datasets/data.csv'
9583 ad7521 an integer . '../datasets/data.csv'
9584 ad7121 an integer . '../datasets/data.csv'
9584 ad7521 an integer . '../datasets/data.csv'
9585 ad7121 an integer . '../datasets/data.csv'
9585 ad7521 an integer . '../datasets/data.csv'
9586 ad7121 an integer . '../datasets/data.csv'
9587 ad7121 an integer . '../datasets/data.csv'
9588 ad7121 an integer . '../datasets/data.csv'
9588 ad7521 an integer . '../datasets/data.csv'
9589 ad7121 an integer . '../datasets/data.csv'
9589 ad7521 an integer . '../datasets/data.csv'
9590 ad7121 an integer . '../datasets/data.csv'
9590 ad7521 an integer . '../datasets/data.csv'
9591 ad7521 an integer . '../datasets/data.csv'
9592 ad7121 an integer . '../datasets/data.csv'
9592 ad7521 an integer . '../datasets/data.csv'
9593 ad7121 an integer . '../datasets/data.csv'
9593 ad7521 an integer . '../datasets/data.csv'
9595 ad7121 an integer . '../datasets/data.csv'
9595 ad7521 an integer . '../datasets/data.csv'
9596 ad7121 an integer . '../datasets/data.csv'
9596 ad7521 an integer . '../datasets/data.csv'
9597 ad7121 an integer . '../datasets/data.csv'
9597 ad7521 an integer . '../datasets/data.csv'
In [5]:
head(farmdata)
X1hhcodegender1gender2gender3gender4gender5gender6gender7gender8longtermrainfallshifts2longtermrainfallshifts3adjtempshifts1_1adjtempshifts2_1adjtempshifts3_1adjrainfallshifts1_1adjrainfallshifts2_1adjrainfallshifts3_1interviewervname
0 100106011 2 1 1 2 1 1 1 NA NA NA NA NA NA NA NA . .
1 100106021 2 1 1 1 2 1 1 NA NA NA NA NA NA NA NA . .
2 100106032 1 2 2 2 1 2 2 NA NA NA NA NA NA NA NA . .
3 100106042 2 2 1 1 1 1 1 NA NA NA NA NA NA NA NA . .
4 100106051 2 1 1 1 2 1 1 NA NA NA NA NA NA NA NA . .
5 100106061 2 1 1 1 1 2 2 NA NA NA NA NA NA NA NA 186 Tikare
In [6]:
dim(farmdata)
  1. 9597
  2. 1754

Piping ("%>%")

In [7]:
columnsAlphaOrder_withPiping <- farmdata %>%
    names() %>%
    sort()
In [8]:
columnsAlphaOrder_withoutPiping <- sort(names(farmdata))
In [9]:
identical(columnsAlphaOrder_withPiping,columnsAlphaOrder_withoutPiping)
TRUE
In [10]:
columnsAlphaOrder <- columnsAlphaOrder_withPiping
head(columnsAlphaOrder)
  1. 'X1'
  2. 'ad711'
  3. 'ad7110'
  4. 'ad7111'
  5. 'ad7112'
  6. 'ad7113'

Selecting one or more columns ("select()")

Selecting a column

In [11]:
farmdata %>%
    select(gender1) %>%
    head()
gender1
1
1
2
2
1
1

Removing a column

In [12]:
farmdata %>%
    select(-gender1) %>%
    head()
X1hhcodegender2gender3gender4gender5gender6gender7gender8age1longtermrainfallshifts2longtermrainfallshifts3adjtempshifts1_1adjtempshifts2_1adjtempshifts3_1adjrainfallshifts1_1adjrainfallshifts2_1adjrainfallshifts3_1interviewervname
0 100106012 1 1 2 1 1 1 57 NA NA NA NA NA NA NA NA . .
1 100106022 1 1 1 2 1 1 61 NA NA NA NA NA NA NA NA . .
2 100106031 2 2 2 1 2 2 47 NA NA NA NA NA NA NA NA . .
3 100106042 2 1 1 1 1 1 51 NA NA NA NA NA NA NA NA . .
4 100106052 1 1 1 2 1 1 56 NA NA NA NA NA NA NA NA . .
5 100106062 1 1 1 1 2 2 59 NA NA NA NA NA NA NA NA 186 Tikare

Selecting the columns that start with "gender"

In [13]:
farmdata %>%
    select(starts_with("gender")) %>%
    head()
gender1gender2gender3gender4gender5gender6gender7gender8gender9gender10gender29gender30gender31gender32gender33gender34gender35gender36gender37gender38
1 2 1 1 2 1 1 1 1 1 NANANANANANANANANANA
1 2 1 1 1 2 1 1 1 1 NANANANANANANANANANA
2 1 2 2 2 1 2 2 2 1 NANANANANANANANANANA
2 2 2 1 1 1 1 1 1 2 NANANANANANANANANANA
1 2 1 1 1 2 1 1 2 2 NANANANANANANANANANA
1 2 1 1 1 1 2 2 1 1 NANANANANANANANANANA

Removing the columns that start with "gender"

In [14]:
farmdata %>%
    select(-starts_with("gender")) %>%
    head()
X1hhcodeage1age2age3age4age5age6age7age8longtermrainfallshifts2longtermrainfallshifts3adjtempshifts1_1adjtempshifts2_1adjtempshifts3_1adjrainfallshifts1_1adjrainfallshifts2_1adjrainfallshifts3_1interviewervname
0 1001060157 50 28 15 44 23 20 17 NA NA NA NA NA NA NA NA . .
1 1001060261 49 38 35 30 40 33 24 NA NA NA NA NA NA NA NA . .
2 1001060347 29 13 27 4 0 21 3 NA NA NA NA NA NA NA NA . .
3 1001060451 35 27 21 20 18 16 14 NA NA NA NA NA NA NA NA . .
4 1001060556 49 27 25 24 17 22 16 NA NA NA NA NA NA NA NA . .
5 1001060659 54 35 33 30 27 25 22 NA NA NA NA NA NA NA NA 186 Tikare

Selecting two columns

In [15]:
farmdata %>%
    select(gender1,age1) %>%
    head()
gender1age1
1 57
1 61
2 47
2 51
1 56
1 59

Removing two columns

In [16]:
farmdata %>%
    select(-gender1,-gender2) %>%
    head()
X1hhcodegender3gender4gender5gender6gender7gender8age1age2longtermrainfallshifts2longtermrainfallshifts3adjtempshifts1_1adjtempshifts2_1adjtempshifts3_1adjrainfallshifts1_1adjrainfallshifts2_1adjrainfallshifts3_1interviewervname
0 100106011 1 2 1 1 1 57 50 NA NA NA NA NA NA NA NA . .
1 100106021 1 1 2 1 1 61 49 NA NA NA NA NA NA NA NA . .
2 100106032 2 2 1 2 2 47 29 NA NA NA NA NA NA NA NA . .
3 100106042 1 1 1 1 1 51 35 NA NA NA NA NA NA NA NA . .
4 100106051 1 1 2 1 1 56 49 NA NA NA NA NA NA NA NA . .
5 100106061 1 1 1 2 2 59 54 NA NA NA NA NA NA NA NA 186 Tikare

Selecting several columns

In [17]:
farmdata %>%
    select(ends_with("1"),ends_with("2")) %>%
    head()
X1gender1age1educ1married1farmwork1nfarmwork1age11age21age31ad752ad7512ad7522ad762ad7612ad7622clmadaptstrategy2constraint2longtermtempshifts2longtermrainfallshifts2
0 1 577 1 1 2 15 5NA0 0 0 0 0 0 NANANANA
1 1 616 1 1 2 21NANA0 0 0 0 0 0 NANANANA
2 2 473 3 1 2 12NANA0 0 0 0 0 0 NANANANA
3 2 511 3 1 2 3NANA0 0 0 0 0 0 NANANANA
4 1 560 1 1 1 38 3NA0 0 0 0 0 0 NANANANA
5 1 595 1 1 2 1681NA0 0 0 0 0 0 NANANANA
In [18]:
farmdata %>%
    select(contains("ge")) %>%
    head()
gender1gender2gender3gender4gender5gender6gender7gender8age1age2subs2getsubs3getsubs4getwagehhcwagehhfwagehhmwagehrcwagehrfwagehrmfarmingexperience
1 2 1 1 2 1 1 1 57 50 2 2 2 NA NA NA NA NA NANA
1 2 1 1 1 2 1 1 61 49 2 2 2 NA NA NA NA NA NANA
2 1 2 2 2 1 2 2 47 29 2 2 2 NA NA NA NA NA 1000NA
2 2 2 1 1 1 1 1 51 35 2 2 2 NA NA NA 500 500 750NA
1 2 1 1 1 2 1 1 56 49 2 2 2 300 500 500 NA NA NANA
1 2 1 1 1 1 2 2 59 54 2 2 2 200 400 400 500 750 750NA
In [19]:
farmdata %>%
    select(age1:age11) %>%
    head()
age1age2age3age4age5age6age7age8educ1educ2nfarmwork2nfarmwork3nfarmwork4nfarmwork5nfarmwork6nfarmwork7nfarmwork8age9age10age11
57502815442320177 0 2 1 1 2 1 1 2 151315
61493835304033246 5 2 1 1 1 2 1 2 562421
47291327 4 021 33 9 2 2 2 2 2 2 2 171512
51352721201816141 6 1 1 2 2 2 2 2 13 9 3
56492725241722160 1 1 2 2 2 2 2 2 111138
59543533302725225 0 1 1 1 1 1 1 1 212116
In [20]:
farmdata %>%
    select(num_range("age",1:11)) %>%
    head()
age1age2age3age4age5age6age7age8age9age10age11
5750281544232017151315
6149383530403324562421
47291327 4 021 3171512
513527212018161413 9 3
5649272524172216111138
5954353330272522212116

Selecting one or more rows ("filter()")

In [21]:
farmdata %>%
    filter(vname == "Tikare")
X1hhcodegender1gender2gender3gender4gender5gender6gender7gender8longtermrainfallshifts2longtermrainfallshifts3adjtempshifts1_1adjtempshifts2_1adjtempshifts3_1adjrainfallshifts1_1adjrainfallshifts2_1adjrainfallshifts3_1interviewervname
5 100106061 2 1 1 1 1 2 2 NA NA NA NA NA NA NA NA 186 Tikare
6 100106071 2 1 2 1 1 1 2 NA NA NA NA NA NA NA NA 186 Tikare
7 100106081 1 2 2 1 1 1 1 NA NA NA NA NA NA NA NA 186 Tikare
8 100106091 2 2 1 2 2 2 2 NA NA NA NA NA NA NA NA 186 Tikare
9 100106101 2 1 1 1 2 1 1 NA NA NA NA NA NA NA NA 186 Tikare
In [22]:
farmdata %>%
    filter(fplots >= 9)
X1hhcodegender1gender2gender3gender4gender5gender6gender7gender8longtermrainfallshifts2longtermrainfallshifts3adjtempshifts1_1adjtempshifts2_1adjtempshifts3_1adjrainfallshifts1_1adjrainfallshifts2_1adjrainfallshifts3_1interviewervname
4758 500304301 2 1 2 1 1 2 2 NA NA NA NA NA NA NA NA 4 NA
6839 700624201 1 1 1 1 2 NA NA NA NA NA NA NA NA NA NA 29 NA
6947 700904181 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 31 NA
  • <  : less than
  • <= : less than or equal to
  • >  : greater than
  • >= : greater than or equal to
  • == : equal to
  • != : not equal to
  • |  : or
  • &  : and
In [23]:
farmdata %>%
    filter(vname == "Tikare" & gender3 > 1)
X1hhcodegender1gender2gender3gender4gender5gender6gender7gender8longtermrainfallshifts2longtermrainfallshifts3adjtempshifts1_1adjtempshifts2_1adjtempshifts3_1adjrainfallshifts1_1adjrainfallshifts2_1adjrainfallshifts3_1interviewervname
7 100106081 1 2 2 1 1 1 1 NA NA NA NA NA NA NA NA 186 Tikare
8 100106091 2 2 1 2 2 2 2 NA NA NA NA NA NA NA NA 186 Tikare

Adding new variables ("mutate()")

Testing with a sample data

In [24]:
SubsetOfFarmdata <- farmdata %>%
    select(starts_with("gender"))%>%
    head()
SubsetOfFarmdata
gender1gender2gender3gender4gender5gender6gender7gender8gender9gender10gender29gender30gender31gender32gender33gender34gender35gender36gender37gender38
1 2 1 1 2 1 1 1 1 1 NANANANANANANANANANA
1 2 1 1 1 2 1 1 1 1 NANANANANANANANANANA
2 1 2 2 2 1 2 2 2 1 NANANANANANANANANANA
2 2 2 1 1 1 1 1 1 2 NANANANANANANANANANA
1 2 1 1 1 2 1 1 2 2 NANANANANANANANANANA
1 2 1 1 1 1 2 2 1 1 NANANANANANANANANANA
In [25]:
CountOfMen <- SubsetOfFarmdata %>%
    {. == 1} %>%
    apply(1,sum,na.rm=T)
CountOfMen
  1. 11
  2. 12
  3. 5
  4. 6
  5. 9
  6. 12
In [26]:
CountOfMen <- SubsetOfFarmdata %>%
    magrittr::equals(1) %>%
    rowSums(na.rm=T)
CountOfMen
  1. 11
  2. 12
  3. 5
  4. 6
  5. 9
  6. 12
In [27]:
CountOfWomen <- SubsetOfFarmdata %>%
    {. == 2} %>%
    apply(1,sum,na.rm=T)
CountOfWomen
  1. 11
  2. 8
  3. 7
  4. 5
  5. 15
  6. 13
In [28]:
SubsetOfFarmdata %>%
    mutate(CountOfMen, CountOfWomen)
gender1gender2gender3gender4gender5gender6gender7gender8gender9gender10gender31gender32gender33gender34gender35gender36gender37gender38CountOfMenCountOfWomen
1 2 1 1 2 1 1 1 1 1 NANANANANANANANA1111
1 2 1 1 1 2 1 1 1 1 NANANANANANANANA12 8
2 1 2 2 2 1 2 2 2 1 NANANANANANANANA 5 7
2 2 2 1 1 1 1 1 1 2 NANANANANANANANA 6 5
1 2 1 1 1 2 1 1 2 2 NANANANANANANANA 915
1 2 1 1 1 1 2 2 1 1 NANANANANANANANA1213

Making a column, MenPlusWomen

In [29]:
farmdata <- farmdata %>%
    mutate(
        MenPlusWomen = farmdata %>%
            select(starts_with("gender")) %>%
            {. == 1 | . == 2} %>%
        apply(1,sum,na.rm=T)
)
farmdata %>% head()
X1hhcodegender1gender2gender3gender4gender5gender6gender7gender8longtermrainfallshifts3adjtempshifts1_1adjtempshifts2_1adjtempshifts3_1adjrainfallshifts1_1adjrainfallshifts2_1adjrainfallshifts3_1interviewervnameMenPlusWomen
0 100106011 2 1 1 2 1 1 1 NA NA NA NA NA NA NA . . 22
1 100106021 2 1 1 1 2 1 1 NA NA NA NA NA NA NA . . 20
2 100106032 1 2 2 2 1 2 2 NA NA NA NA NA NA NA . . 12
3 100106042 2 2 1 1 1 1 1 NA NA NA NA NA NA NA . . 11
4 100106051 2 1 1 1 2 1 1 NA NA NA NA NA NA NA . . 24
5 100106061 2 1 1 1 1 2 2 NA NA NA NA NA NA NA 186 Tikare 25

Making a column, landowner

In [30]:
farmdata <- farmdata %>%
    mutate(landowner = (tenure1 == 1 | tenure1 == 2))

Changing the order of rows ("arrage()")

In [31]:
farmdata %>%
    arrange(MenPlusWomen) %>%
    head()
X1hhcodegender1gender2gender3gender4gender5gender6gender7gender8adjtempshifts1_1adjtempshifts2_1adjtempshifts3_1adjrainfallshifts1_1adjrainfallshifts2_1adjrainfallshifts3_1interviewervnameMenPlusWomenlandowner
1987 28030101 NA NA NA NA NA NA NA NA no change n/a n/a multiple croppingn/a n/a NA NA 0 FALSE
1988 28030102 NA NA NA NA NA NA NA NA no change n/a n/a early planting n/a n/a NA NA 0 FALSE
1989 28030103 NA NA NA NA NA NA NA NA no change n/a n/a dry planting n/a n/a NA NA 0 FALSE
1990 28030104 NA NA NA NA NA NA NA NA no change n/a n/a no change n/a n/a NA NA 0 FALSE
1991 28030105 NA NA NA NA NA NA NA NA no change n/a n/a multiple croppingn/a n/a NA NA 0 FALSE
1992 28030106 NA NA NA NA NA NA NA NA no change n/a n/a no change n/a n/a NA NA 0 FALSE
In [32]:
farmdata %>%
    select(MenPlusWomen, hhsize) %>%
    arrange(MenPlusWomen) %>%
    head()
MenPlusWomenhhsize
03
01
03
04
05
05

Using desc() for descending sort

In [33]:
farmdata %>%
    select(MenPlusWomen, hhsize) %>%
    arrange(desc(MenPlusWomen)) %>%
    head()
MenPlusWomenhhsize
3838
3841
3839
3841
3737
3737

NA is a value which is larger than any number in the function "arrange" (even infinity!).

In [34]:
arrange(data.frame(val = c(2^10, NA, -2^5, Inf, -Inf, NA)), val)
val
-Inf
-32
1024
Inf
NA
NA

Converting a variable to a single value ("summarize()" or "summarise()")

Calculating mean of variables

In [35]:
farmdata %>%
    summarize(meanMenPlusWomen = mean(MenPlusWomen),
             meanhhsize = mean(hhsize, na.rm = T))
meanMenPlusWomenmeanhhsize
6.56924 7.276762
In [36]:
farmdata %>%
    summarise(meanMenPlusWomen = mean(MenPlusWomen),
             meanhhsize = mean(hhsize, na.rm = T))
meanMenPlusWomenmeanhhsize
6.56924 7.276762

Counting NAs of variables

In [37]:
farmdata %>%
    summarize(missingMenPlusWomen = sum(MenPlusWomen == 0),
             missinghhsize = sum(is.na(hhsize)))
missingMenPlusWomenmissinghhsize
797134

Grouping sets of observations ("group_by()")

In [38]:
farmdata %>%
    group_by(landowner) %>%
    summarize(plots = median(fplots, na.rm=T))
landownerplots
FALSE1
TRUE2
NA1
In [39]:
table(farmdata$fplots)

farmdata %>%
    group_by(fplots) %>%
    tally()

farmdata %>%
    group_by(fplots) %>%
    count()
   0    1    2    3  3.3    4    5    6    8   10   12 
  27 4213 2576 1545    1 1145   38   11    9    2    1 
fplotsn
0.0 27
1.04213
2.02576
3.01545
3.3 1
4.01145
5.0 38
6.0 11
8.0 9
10.0 2
12.0 1
NA 29
fplotsn
0.0 27
1.04213
2.02576
3.01545
3.3 1
4.01145
5.0 38
6.0 11
8.0 9
10.0 2
12.0 1
NA 29
In [40]:
table(farmdata$landowner, farmdata$fplots)

farmdata %>%
    group_by(landowner, fplots) %>%
    tally() %>%
    na.omit()
       
           0    1    2    3  3.3    4    5    6    8   10   12
  FALSE   25 1282  678  318    0  275    8    3    3    1    0
  TRUE     0 2324 1723 1181    1  866   29    8    6    1    1
landownerfplotsn
FALSE 0.0 25
FALSE 1.0 1282
FALSE 2.0 678
FALSE 3.0 318
FALSE 4.0 275
FALSE 5.0 8
FALSE 6.0 3
FALSE 8.0 3
FALSE10.0 1
TRUE 1.0 2324
TRUE 2.0 1723
TRUE 3.0 1181
TRUE 3.3 1
TRUE 4.0 866
TRUE 5.0 29
TRUE 6.0 8
TRUE 8.0 6
TRUE10.0 1
TRUE12.0 1
In [41]:
farmdata %>%
    group_by(interviewer) %>%
    tally() %>%
    filter(n > 50) %>%
    arrange(desc(n))
interviewern
NA 2329
. 1124
4 880
70 123
162 64
228 63
223 60
42 60
62 60
65 60
84 60
237 55
329 55
327 53


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
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
글 보관함