r - 在R中循环数据帧直到满足某个条件
问题描述
我们有当前的数据框 df 如下
df <- data.frame(ID = c(1,2,3,4,5,6), Name = c("Chris", "J", "Kemp", "President,", "CEO & ", "Director", "Ashton", "K", "Christian", "Analyst"),
Font = c("Font A", "Font A", "Font A", "Font B", "Font B", "Font B", "Font A", "Font A", "Font A", "Font B"))
预期的输出是
final_df <- data.frame(Name = c("Chris J Kemp", "Ashton K Christian"), Designation = c("President, CEO & Director", "Analyst"))
所以基本上我想添加名称,直到在 Font 列中有某种字体类型,这当然是我正在处理的巨大数据框的一个示例。我在这里先向您的帮助表示感谢 !
对不起你之前的所有努力。这个问题已经被重新编辑了一点。
解决方案
数据:
df <- data.frame(
ID = c(1:12),
Name = c("Chris", "J", "Kemp", "President,", "CEO & ", "Director",
"Bad", "D", "King", "Best,", "Teacher & ", "Friend"),
Font = c("Font A", "Font A", "Font A", "Font B", "Font B", "Font B",
"Font A", "Font A", "Font A", "Font B", "Font B", "Font B")
)
你可以做:
df$group <- cumsum(c(TRUE, df$Font[-1] != df$Font[-length(df$Font)]))
final_df <- as.data.frame(matrix(lapply(split(df$Name, df$group), paste, collapse = " "), ncol = 2))
colnames(final_df) <- c("Name", "Designation")
创建一个分组行的连续字体。然后split
允许为每种字体创建一个列表,然后您可以使用paste
.
输出:
Name Designation
1 Chris J Kemp Bad D King
2 President, CEO & Director Best, Teacher & Friend
推荐阅读
- webpack - 如何避免警告 `Module parse failed: Unexpected token` 来自 date-fns/locale
- python - 异常类型:NoReverseMatch
- android - 使用 Glide 首次加载时 Imageview 没有图像
- dart - Flutter 父组件如何调用子组件?
- python - 如何使此代码在单个文件夹中运行多个图像?
- gatling - 从可选检查构建请求正文
- c - Stumped - 代码编译,但微控制器端没有任何反应。我怀疑 ISR 中的某些东西可能是罪魁祸首
- html - WKWebview 加载本地 html 文件和深度链接进入目标页面
- android-recyclerview - 无法将数据从 RecyclerView 适配器传递到 Viewpager 适配器
- google-app-engine - App Engine任务队列创建一批队列项目并在go lang中每10秒执行一次