如何将字符向量列表与R中的数据帧相关联
我的数据的形状相当简单:如何将字符向量列表与R中的数据帧相关联,r,R,我的数据的形状相当简单: set.seed(1337) id <- c(1:4) values <- runif(0, 1, n=4) df <- data.frame(id, values) df id values 1 1 0.57632155 2 2 0.56474213 3 3 0.07399023 4 4 0.45386562 set.seed(1337) 这并不难。您只需将您的列表分配给df创建一个新列作为名称标记,然后我们执行unest,我
set.seed(1337)
id <- c(1:4)
values <- runif(0, 1, n=4)
df <- data.frame(id, values)
df
id values
1 1 0.57632155
2 2 0.56474213
3 3 0.07399023
4 4 0.45386562
set.seed(1337)
这并不难。您只需将您的列表分配给df创建一个新列作为名称标记,然后我们执行unest
,我已经列出了您列出的问题的解决方案
library(tidyr)
library(dplyr)
df$tags=list(
c("A"),
NA,
c("A", "B", "C"),
c("B", "C")
)
Newdf=df%>%tidyr::unnest(tags)
Q1.
Newdf%>%group_by(tags)%>%summarise(Mean=mean(values))%>%filter(tags=='B')
tags Mean
<chr> <dbl>
1 B 0.263927925960161
Newdf%>%group_by(id)%>%dplyr::summarise(Count=any(tags=='A')&any(tags=='C'))
# A tibble: 4 x 2
id Count
<int> <lgl>
1 1 FALSE
2 2 NA
3 3 TRUE
4 4 FALSE
以下是获得预期输出的两个选项。在数据集中创建“标记”作为列表
列和unest
(已来自注释),然后通过获取逻辑向量的和
汇总
a”或“C”的数量。类似地,“值”的平均值,其中“tag”是“B”
library(tidyverse)
df %>%
mutate(tag = tags) %>%
unnest %>%
summarise(nAC = sum(tag %in% c("A", "C")),
meanB = mean(values[tag == "B"], na.rm = TRUE))
你有几个问题。你的预期产出是多少?可能是df%>%mutate(tag=tags)%%>%unnest%>%groupby(tag)%%>%summary(n=n(),Mean=Mean(values,na.rm=TRUE))
或者它可以是dbedf%>%mutate(tag=tags)%%>%unnest%>%summary(nAC=sum(tag%c(“A”,“c”)),meanB=Mean(values[tag==“B”]、na.rm=TRUE))
客户端是不可预测的,我自己公司内可能要求交付成果的人员也是如此。我不能总是预料会有人问我什么问题。所以我问你,“你将如何存储这些标签,以便最灵活?”
library(tidyverse)
df %>%
mutate(tag = tags) %>%
unnest %>%
summarise(nAC = sum(tag %in% c("A", "C")),
meanB = mean(values[tag == "B"], na.rm = TRUE))