如何将R dataframe每行数据拼接为键值对格式存入新增列
R DataFrame 每行拼接为键值对字符串实现方案
首先提供测试数据构造代码,方便你直接复现效果:
# 构造示例测试数据 df <- data.frame( city = c("Atlanta", "New York", "Atlanta", "Tampa"), rev = c(63.0, 10.6, 12.0, 3.0), qty = rep(1, 4), zip = c(45987, 12686, 74268, 33684) )
方法1:Base R 实现(无需依赖第三方包)
直接用apply按行遍历拼接,可灵活控制数值格式,和你示例要求的rev保留2位小数的效果完全匹配:
df$key_value <- apply(df, 1, function(row) { paste0( "city=", row["city"], ";", "rev=", sprintf("%.2f", as.numeric(row["rev"])), ";", "qty=", row["qty"], ";", "zip=", row["zip"] ) })
如果你的表列数较多,不想逐个写列名,可以用通用适配版本,自动读取所有列名拼接:
# base R 通用适配任意列数版本 df$key_value <- apply(df, 1, function(row) { paste0(names(df), "=", row, collapse = ";") })
方法2:tidyverse 实现(代码更简洁)
如果你习惯使用tidyverse生态,可以用purrr的pmap函数实现:
library(dplyr) library(purrr) df <- df %>% mutate(key_value = pmap_chr(., function(city, rev, qty, zip) { sprintf("city=%s;rev=%.2f;qty=%d;zip=%d", city, rev, qty, zip) }))
内容的提问来源于stack exchange,提问作者ThirdEye
相关产品推荐
相关产品推荐

