如何将字符向量列表与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))
或者它可以是dbe
df%>%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))