Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据与基R相结合_R - Fatal编程技术网

将数据与基R相结合

将数据与基R相结合,r,R,我现在需要把我的dplyr代码翻译成基本的R代码。我的dplyr代码给了我3列,选手性别,奥运季节和不同运动项目的数量。代码如下所示: olympics %>% group_by(Sex, Season, Sport) %>% summarise(n()) %>% group_by(Sex, Season) %>% summarise(n()) %>% setNames(c("Competitor_Sex", "Olympic_Season

我现在需要把我的dplyr代码翻译成基本的R代码。我的dplyr代码给了我3列,选手性别,奥运季节和不同运动项目的数量。代码如下所示:

olympics %>% 
  group_by(Sex, Season, Sport) %>% 
  summarise(n()) %>% 
  group_by(Sex, Season) %>%
  summarise(n()) %>%
  setNames(c("Competitor_Sex", "Olympic_Season", "Num_Sports"))
我的数据结构如下所示

 structure(list(Name = c("A Lamusi", "Juhamatti Tapio Aaltonen", 
"Andreea Aanei", "Jamale (Djamel-) Aarrass (Ahrass-)", "Nstor Abad Sanjun", 
"Nstor Abad Sanjun"), Sex = c("M", "M", "F", "M", "M", "M"), 
    Age = c(23L, 28L, 22L, 30L, 23L, 23L), Height = c(170L, 184L, 
    170L, 187L, 167L, 167L), Weight = c(60, 85, 125, 76, 64, 
    64), Team = c("China", "Finland", "Romania", "France", "Spain", 
    "Spain"), NOC = c("CHN", "FIN", "ROU", "FRA", "ESP", "ESP"
    ), Games = c("2012 Summer", "2014 Winter", "2016 Summer", 
    "2012 Summer", "2016 Summer", "2016 Summer"), Year = c(2012L, 
    2014L, 2016L, 2012L, 2016L, 2016L), Season = c("Summer", 
    "Winter", "Summer", "Summer", "Summer", "Summer"), City = c("London", 
    "Sochi", "Rio de Janeiro", "London", "Rio de Janeiro", "Rio de Janeiro"
    ), Sport = c("Judo", "Ice Hockey", "Weightlifting", "Athletics", 
    "Gymnastics", "Gymnastics"), Event = c("Judo Men's Extra-Lightweight", 
    "Ice Hockey Men's Ice Hockey", "Weightlifting Women's Super-Heavyweight", 
    "Athletics Men's 1,500 metres", "Gymnastics Men's Individual All-Around", 
    "Gymnastics Men's Floor Exercise"), Medal = c(NA, "Bronze", 
    NA, NA, NA, NA), BMI = c(20.7612456747405, 25.1063327032136, 
    43.2525951557093, 21.7335354170837, 22.9481157445588, 22.9481157445588
    )), .Names = c("Name", "Sex", "Age", "Height", "Weight", 
"Team", "NOC", "Games", "Year", "Season", "City", "Sport", "Event", 
"Medal", "BMI"), row.names = c(NA, 6L), class = "data.frame")

有人知道如何将其转换为基本R吗?

因为您在
dplyr
中进行了两次分组,所以可以在基本R中使用double
aggregate

setNames(aggregate(Name~Sex + Season, 
      aggregate(Name~Sex + Season + Sport, olympics, length), length), 
       c("Competitor_Sex", "Olympic_Season", "Num_Sports"))

#   Competitor_Sex Olympic_Season Num_Sports
#1               F         Summer          1
#2               M         Summer          3
#3               M         Winter          1
这将提供与
dplyr
选项相同的输出

library(dplyr)
olympics %>% 
  group_by(Sex, Season, Sport) %>% 
  summarise(n()) %>% 
  group_by(Sex, Season) %>%
  summarise(n()) %>%
  setNames(c("Competitor_Sex", "Olympic_Season", "Num_Sports"))

#  Competitor_Sex Olympic_Season Num_Sports
#  <chr>          <chr>               <int>
#1 F              Summer                  1
#2 M              Summer                  3
#3 M              Winter                  1
库(dplyr)
奥运会%>%
按(性别、季节、运动)分组%>%
总结(n())%>%
按性别、季节划分的组别%>%
总结(n())%>%
设置名称(c(“选手性别”、“奥运季”、“数量体育”))
#竞争对手性别奥运季数量体育
#                           
#1楼夏季1
#2米夏季3
#3米冬季1

A
base R
选项将使用
aggregate
两次

out <- aggregate(BMI ~ Sex + Season, 
     aggregate(BMI ~ Sex + Season + Sport, olympics, length), length)
names(out) <- c("Competitor_Sex", "Olympic_Season", "Num_Sports")
out
#   Competitor_Sex Olympic_Season Num_Sports
#1              F         Summer          1
#2              M         Summer          3
#3              M         Winter          1

你为什么要这样做?我编辑的结构,现在应该完成了。它用于明确要求基R的赋值。
olympics %>% 
   group_by(Sex, Season, Sport) %>% 
   summarise(n()) %>% 
   group_by(Sex, Season) %>%
   summarise(n()) %>%
   setNames(c("Competitor_Sex", "Olympic_Season", "Num_Sports"))
# A tibble: 3 x 3
# Groups:   Sex [2]
#  Competitor_Sex Olympic_Season Num_Sports
#  <chr>          <chr>               <int>
#1 F              Summer                  1
#2 M              Summer                  3
#3 M              Winter                  1
table(sub(",[^,]+$", "", names(table(do.call(paste, 
        c(olympics[c("Sex", "Season", "Sport")], sep=","))))))

 #  F,Summer M,Summer M,Winter 
 #      1        3        1