【发布时间】:2021-12-12 02:20:17
【问题描述】:
问题
我正在尝试将数据框写入 CSV 文件,该文件将被 Google 电子表格正确读取,但是我遇到了特定列格式的错误。
有一列名为“详细信息”,其值类似于{\"campaign_id\":1,\"line_item_id\":1234}。此列格式由 R 从 Google 电子表格提供的原始数据帧中正确读取,但当写入 CSV 时,该列沿, 分为两列,推动覆盖以下列的值(默认为空) .
数据
R 中的数据框如下所示:
data <- structure(
list(
`Line Item Id` = c(1234, 4567),
Details = c(
"{\"campaign_id\":1,\"line_item_id\":1234}",
"{\"campaign_id\":1,\"line_item_id\":4567}"
),
`Bid Strategy Type` = c("",""),
`TrueView Video Ad Formats` = c("In-stream / Video Discovery",
"In-stream / Video Discovery"),
`TrueView Bid Strategy Type` = c("Manual CPV",
"Manual CPV")
),
row.names = 1:2,
class = "data.frame"
)
目前的做法
我尝试在引用中写下相关的专栏:
图书馆(tidyverse)
data %>%
mutate(Details = dQuote(Details,q = )) %>%
write.csv("test.csv", fileEncoding = "UTF-8",na = "",row.names = FALSE,quote = FALSE)
但这似乎不起作用,省略dQuote也不起作用。
我的输出 csv 是这样的:
test.csv generated by above code
更多详情
这里涉及的数据是 DV360 生成的 SDF,DV360 是一个用于管理 YouTube 广告活动的 Google 平台。在我的过程中,我从 DV360 下载了一个 SDF,更改了 R 中的一些值并将其上传回来。但是,由于所描述的问题,目前无法重新上传。我已经对其进行了测试,以确认上述列问题是导致问题的原因,并且如果手动更正上传工作正常。
预期输出
我已经添加了预期的输出和我得到的输出。
我现在拥有的:
Line Item Id,Details,TrueView Video Ad Formats,TrueView Bid Strategy Type
14596716402,“{"campaign_id":283,"line_item_id":99588}”,In-stream / Video Discovery,
14596725552,“{"campaign_id":283,"line_item_id":99585}”,In-stream / Video Discovery,
我需要什么:
Line Item Id,Details,TrueView Video Ad Formats,TrueView Bid Strategy Type
1234,"{""campaign_id"":1,""line_item_id"":1234}",,In-stream / Video Discovery
4567,"{""campaign_id"":1,""line_item_id"":4567}",,In-stream / Video Discovery
非常有趣的是,当我在 googlesheets 中手动解决问题然后下载文件时,我得到了什么:
Line Item Id,Details,TrueView Video Ad Formats,TrueView Bid Strategy Type
1234,"""{""""campaign_id"""":1,""""line_item_id"""":1234}""",,In-stream / Video Discovery
4567,"""{""""campaign_id"""":1,""""line_item_id"""":4567}""",,In-stream / Video Discovery
【问题讨论】:
-
您是否考虑过简单地使用集成到
tidyverse中的googlesheets4和googledrive包? -
所以您尝试了
write.csv(data, "test.csv", row.names=FALSE),但没有成功?你究竟是如何用谷歌表格阅读它的?如果我从我编写的命令中获取输出并将其拖到 Google Drive 中,它会正确地在工作表中打开。 -
@Greg 不,因为我不知道它存在。如果可行,我将非常感激和谦卑^^
-
@Fnguyen 乐于助人!请参阅this link 了解与
tidyverse集成或兼容的软件包列表。 -
@Fnguyen 很抱歉听到这个消息。也许尝试调整
write.csv()的qmethod参数? 此外,您是否允许使用 制表符 分隔的.tsv文件代替.csv? 如果是这样,那么write.table()和sep = "\t"应该可以诀窍。我一直更喜欢 TSV,因为(根据我的经验)标签在数据集中比逗号更罕见......
标签: r csv google-sheets