r - 合并数据框中的文本元素并删除文本来自的行
问题描述
这个玩具数据框表示按人员的时间条目。我可用的格式以完全随机的模式为同一个人和同一天提供多个文本条目。同一个人和同一天最多可以有 15 个文本条目。多文本条目的行中没有人员条目。
structure(list(Date = structure(c(1514764800, 1514764800, NA,
1517443200, 1519862400, NA, NA, NA, 1519862400, NA, NA), class = c("POSIXct",
"POSIXt"), tzone = "UTC"), Person = c("FMC", "ABC", NA, "FMC",
"ABC", NA, NA, NA, "RWM", NA, NA), Text = c("work on request",
"More text", "third line", "email to re: summary", "work on loan documents",
"sixth line of text", "text seven", "eighth in a series", "conferences with working group",
"line ten", "review and provide comments")), row.names = c(NA,
-11L), class = c("tbl_df", "tbl", "data.frame"))
如何组合文本元素,以便每个人每天的条目只有一行,删除不需要的行(一旦将文本粘贴在一起)并到达以下对象?
EDITED QUESTION 省略了for
我尝试失败的循环。
必须有一种方法可以将给定日期的给定人员的所有文本组合成一行(例如,ABC 在 2018 年 1 月 1 日有两个条目)并删除组合文本来自的行。
解决方案
我们可以使用最后一个非缺失na.locf
值来填充缺失值 ( ),然后将连续出现的和组合在一起。NA
group_by
Person
summarise
Text
paste
library(dplyr)
library(zoo)
library(data.table)
df %>%
na.locf(.) %>%
group_by(group = rleid(Person)) %>%
summarise(Text = paste0(Text, collapse = " "))
# group Text
# <int> <chr>
#1 1 work on request
#2 2 More text third line
#3 3 email to re: summary
#4 4 work on loan documents sixth line of text text seven eighth in a series
#5 5 conferences with working group line ten review and provide comments
对于更新的问题,我们可以做
library(dplyr)
library(zoo)
df %>%
na.locf(.) %>%
group_by(Date, Person) %>%
summarise(Text = paste0(Text, collapse = " "))
推荐阅读
- flutter - 如何处理 _platformCallHandler 调用 speech.onError 7?
- adsense - Adsense 可以在移动设备上工作,但不能在桌面上工作?
- api - Alpha Vantage API:如何获取股票市场指数?
- javascript - 如何将 express.js 与您的网站集成
- react-native - 抽屉不从左到右改变位置
- javascript - 循环遍历对象数组并在 HTML 中显示它们
- javascript - VUE - [食物配料计数器]当点击“+添加”按钮时如何增加元素 -topping- 在 v-for list -of toppings- 中的值
- c# - 如何通过 .net SDK 在 AWS ec2 中创建实例
- javascript - React Childs 组件改变了他的父母状态
- docker - alpine krb5 安装 docker 容器中缺少的 kerberos 命令