R从数据框中创建一个命名列表

u31889

我有条件的数据框:

df <- data.frame(Gender=c("Male", "Female", "Other"), AgeCat=c("young", "adult", "old"))
df
  Gender AgeCat
1   Male  young
2 Female  adult
3  Other    old

我有一个“主”数据框,我需要根据前一个数据框中包含的条件从中提取数据:

master <- data.frame(Country=c("US", "US", "ENG", "SPN", "MEX", "ARG"), Gender=c("Male", "Male", "Male", "Female", "Female", "Female"), AgeCat=c("young", "young", "old", "adult", "adult", "adult"), Height=c("134", "125", "169", "189", "176", "191"))
master
  Country Gender AgeCat Height
1      US   Male  young    134
2      US   Male  young    125
3     ENG   Male    old    169
4     SPN Female  adult    189
5     MEX Female  adult    176
6     ARG Female  adult    191

使用该apply中的函数之一,我试图master基于的行创建的子集列表df

为了获得myList如下列表

Male_young <- subset(master, Gender=="Male" & AgeCat=="young")
Male_young
  Country Gender AgeCat Height
1      US   Male  young    134
2      US   Male  young    125

Female_adult <- subset(master, Gender=="Female" & AgeCat=="adult")
Female_adult
  Country Gender AgeCat Height
4     SPN Female  adult    189
5     MEX Female  adult    176
6     ARG Female  adult    191

Other_adult <- subset(master, Gender=="Other" & AgeCat=="old")
Other_adult
[1] Country Gender  AgeCat  Height
<0 rows> (or 0-length row.names)

myList <- list(Male_young=Male_young, Female_adult=Female_adult, Other_old=Other_old)
myList
$Male_young
  Country Gender AgeCat Height
1      US   Male  young    134
2      US   Male  young    125

$Female_adult
  Country Gender AgeCat Height
4     SPN Female  adult    189
5     MEX Female  adult    176
6     ARG Female  adult    191

$Other_old
[1] Country Gender  AgeCat  Height
<0 rows> (or 0-length row.names)

编辑我意识到我想展示一个例子可能太简单了。我实际上试图获取的是一个数据帧(或可以转换为数据帧或矩阵的列表),如下所示:

    Conditions Individuals Mean_Height
1   Male_young           2       129.5
2 Female_adult           3    185.3333
3    Other_old           0           .

编辑2我一直坚持这种方法,但我不确定它是否非常有效:

df[c("Conditions", "Individuals", "Mean_Height")] <- t(
        mapply(
            function(X, Y, Z){
                sub_df <- subset(X, Gender==Y & AgeCat==Z)
                c(paste(Y, Z, sep="_"), nrow(sub_df), colMeans(sub_df$Height))
            },
            master,
            df$Gender,
            df$AgeCat
        )
    )
佐治亚州

可能是您实际上想要这个吗?

master <- data.frame(Country=c("US", "US", "ENG", "SPN", "MEX", "ARG"), Gender=c("Male", "Male", "Male", "Female", "Female", "Female"), AgeCat=c("young", "young", "old", "adult", "adult", "adult"), Height=c("134", "125", "169", "189", "176", "191"), stringsAsFactors = FALSE)

df <- data.frame(Gender=c("Male", "Female", "Other"), AgeCat=c("young", "adult", "old"), stringsAsFactors = FALSE)

master %>%
    group_by(Gender, AgeCat) %>%
    summarise(mean(as.numeric(Height))) %>%
    full_join(df)

导致

  Gender AgeCat `mean(as.numeric(Height))`
  <chr>  <chr>                       <dbl>
1 Female adult                        185.
2 Male   old                          169 
3 Male   young                        130.
4 Other  old                           NA 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果R中不存在命名列表元素,则创建一个命名列表元素

在R中创建了一个嵌套的命名列表

在R中,如何从分组的数据框中创建命名列表?

需要一个R函数来从数据框中选择特定的命名列

根据另一个列表 R 中的数据框列创建数据框列表

如何删除数据框的列中的一个特定的重复命名列?

如果我创建的命名列表与数据框的列同名,如何在r中添加数据框的行?

在Excel中定义一个自定义命名列表以用于数据验证

可以从R中的lapply函数返回一个命名列表吗?

如何从R中带有字符向量的命名列表中生成一个包含带有重复整数的向量的命名列表?

R创建一个列表,而不是数据框

根据数据框中的ID创建一个列表

排除数据框中具有至少一个零值Ctrl或Mn命名列的行

R用常用词命名列表中的数据框列表

根据熊猫数据框中的另一个列表创建一个列表

使用来自另一个数据框的名称重命名列

从两列创建一个命名列表,每个名称具有多个值

将数据框作为 R 中的一个列表

从R中的三个向量创建命名列表的列表

在R中创建一个空的数据框

R数据存储在一个数据框列的两个列表中,想要创建单个列

仅命名列表中许多数据框的一列

基于数据框的另一列收集一列的值,并使用它们创建命名列表的列表

从另一个包含R中元素列表的数据框中的a.character列创建一个数据框

将数据框转换为具有R中一列名称的数据框的命名列表

重命名列并创建新的数据框

使用 R 中数据框列表中的数据框名称追加一个新列

重命名数据框列表中的第一个列名以匹配数据框的名称

使用与另一个数据框的匹配来重命名数据框列表中的列