You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中转置CSV文件,使每行仅包含一个数据点

在R中高效处理CSV格式转换(无需嵌套循环)

不用嵌套循环,直接利用向量配对和数据框操作就能快速完成格式转换,步骤如下:

1. 准备数据

假设你已经将CSV的两行数据读取为两个向量(row1 对应第一行的键,row2 对应第二行的值):

# 转换前的两行数据拆分后得到的向量
row1 <- c("1", "2", "400", "410", "420", "430", "450", "490", "75700", "75701", "77035", "77035", "77035", "77035")
row2 <- c("*", "Facility Name", "1234 Test Street", "Michigan", "49503", "123-456-7891", "", "MPI_ID_TYPE", "1", "Sober Living Community", "Clothing", "Diapers", "Food Pantry")

2. 调整值向量(按需替换占位值)

根据转换需求,对row2中的部分值进行替换,确保长度与row1一致:

# 替换对应位置的值
row2 <- c(
  row2[1:3], 
  "TestCity",    # 替换原Michigan
  "TestState",   # 替换原49503
  "12345",       # 替换原123-456-7891
  "123-456-7891",# 替换原空值
  row2[8:13]
)

3. 配对键值并过滤无效行

将两个向量配对成数据框,过滤掉不需要的行(比如row1中490对应的空值行):

# 配对键值对
key_value_df <- data.frame(
  key = row1,
  value = row2,
  stringsAsFactors = FALSE
)

# 过滤掉不需要的行
key_value_df <- key_value_df[key_value_df$key != "490", ]

4. 输出为目标格式

用write.table直接输出成所需的CSV格式,无需循环:

# 写入文件,设置分隔符为逗号,不输出行名和列名
write.table(
  key_value_df,
  file = "output.csv",
  sep = ",",
  row.names = FALSE,
  col.names = FALSE,
  quote = FALSE
)

最终输出结果

运行上述代码后,生成的output.csv内容如下:

1,*
2,Facility Name
400,123 Test Street
410,TestCity
420,TestState
430,12345
450,123-456-7891
75700,MPI_ID_TYPE
75701,1
77035,Sober Living Community
77035,Clothing
77035,Diapers
77035,Food Pantry

如果你的原始数据是通过read.csv读取的两行数据框,可先转成向量再处理:

# 读取原始CSV
df <- read.csv("input.csv", header = FALSE, stringsAsFactors = FALSE)
row1 <- as.character(df[1, ])
row2 <- as.character(df[2, ])

内容的提问来源于stack exchange,提问作者Sam Kujawski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 16:10:29