gpt4 book ai didi

r - 如何使用向量将数据框缩减为单行

转载 作者:行者123 更新时间:2023-12-03 18:40:15 24 4
gpt4 key购买 nike

我有这个 DF

  email       date      user_ipaddress       other data    
1 x@bla.com 2020-03-24 177.95.75.230 xxxx
2 x@bla.com 2020-04-02 177.139.49.93 yyyy
3 x@bla.com 2020-04-02 177.139.49.93 zzzz

我想将此数据转换为将要存储的形状

整个问题将是一个包含不同电子邮件的大数据框,我想像这样减少一行中每封电子邮件的所有数据
  email       date      user_ipaddress                       other data    
1 x@bla.com 2020-04-02 c('177.95.75.230','177.139.49.93') c('xxxx','yyyy','zzzz')

实际上,如果有人只能在只有一个电子邮件地址的情况下帮助我,那将挽救我的生命,但可以随时帮助解决整个问题

使用
ipadreessVec<-Reduce(append,x =df$network_userid) 

我可以得到我的矢量 c('177.95.75.230','177.139.49.93') 但如果我尝试制作
newdf$network_userid<-a

我得到
Error in `$<-.data.frame`(`*tmp*`, network_userid, value = c("20562206-f557-48a3-861b-5d1e18524bbb",  : 
replacement has 3 rows, data has 1

任何让我更进一步的答案都会得到批准,即使它不能解决所有问题。

最佳答案

我们可以创建一个按“电子邮件”、“日期”分组的 list

library(dplyr)
DF %>%
group_by(email, date) %>%
summarise_all(list)
# A tibble: 2 x 4
# Groups: email [1]
# email date user_ipaddress otherdata
# <chr> <chr> <list> <list>
#1 x@bla.com 2020-03-24 <chr [1]> <chr [1]>
#2 x@bla.com 2020-04-02 <chr [2]> <chr [2]>

或者在 devel 版本中使用 acrosssummarise
DF %>%
group_by(email, date) %>%
summarise(across(everything(), list))
# A tibble: 2 x 4
# Groups: email [1]
# email date user_ipaddress otherdata
# <chr> <chr> <list> <list>
#1 x@bla.com 2020-03-24 <chr [1]> <chr [1]>
#2 x@bla.com 2020-04-02 <chr [2]> <chr [2]>

数据
DF <- structure(list(email = c("x@bla.com", "x@bla.com", "x@bla.com"
), date = c("2020-03-24", "2020-04-02", "2020-04-02"),
user_ipaddress = c("177.95.75.230",
"177.139.49.93", "177.139.49.93"),
otherdata = c("xxxx", "yyyy",
"zzzz")), class = "data.frame", row.names = c("1", "2", "3"))

关于r - 如何使用向量将数据框缩减为单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61019555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com