【问题标题】:select specific variable from multiple sheet and write as comma separated text file in R?从多个工作表中选择特定变量并在 R 中以逗号分隔的文本文件形式写入?
【发布时间】:2020-11-04 15:39:01
【问题描述】:

我创建了myData.xlsx 表。我想为myData.xlsx 中的每个variable (i.e., G1,G2..etc) 提取PCPMinTMaxT,并将其写为comma separated valuetext 文件。 text 文件的名称应该是我们要为其提取数据的变量(即 G1.txt、G2.txt...等)。

    library(tidyverse)
    library(xlsx)
    
set.seed(123)

    MaxT <- data.frame(G1= runif(1095,-5,20), G2= runif(1095,-4,18),G3= runif(1095,-5,15))
    MinT <- data.frame(G1= runif(1095,-10,10), G2= runif(1095,-8,10),G3= runif(1095,-15,10))
    PCP <- data.frame(G1= runif(1095,1,5), G2= runif(1095,2,10),G3= runif(1095,0,10))
    
    write.xlsx(MaxT, file="myData.xlsx", sheetName="MaxT", row.names=FALSE)
    write.xlsx(MinT, file="myData.xlsx", sheetName="MinT", append=TRUE, row.names=FALSE)
    write.xlsx(PCP, file="myData.xlsx", sheetName="PCP", append=TRUE, row.names=FALSE)

例如,G1.txt 的输出应该是这样的

PCP,MinT,MaxT
0.17,-10.82,-4.71
0.21,-11.87,-2.02
0.14,-4.42,0.04
0.21,-6.9,-0.3
0.13,-8.28,-1.68
0.19,-12.5,-8.53
0.29,-11.29,-8.19
0.3,-12.87,-7.05
0.07,-11.53,-5.14

【问题讨论】:

  • for(c in colnames(MaxT)) write.csv(data.frame(MaxT = MaxT[[c]], MinT = MinT[[c]], PCP=PCP[[c] ]), file = paste0(c,".txt") ) # 这对你有帮助吗?
  • 不是——我需要read_excel(myData.xlsx) 并根据需要进行处理。
  • @RicardoVillalba- 我让你的代码工作了。非常感谢

标签: r excel dataframe tidyverse write.table


【解决方案1】:

我尝试了一种不同的方式(我认为我可以避免 for 循环)。这个想法是用你的所有数据制作一个大数据框,然后旋转它,嵌套它,最后写入 csv 文件。 不知道会不会更好。

bind_rows(list(PCP = PCP, MaxT = MaxT, MinT = MinT), .id = "id") %>% 
pivot_longer(!id, names_to = "names", values_to = "values") %>% 
group_by(id, names) %>% 
nest() %>%
unnest_wider(data) %>% 
pivot_wider(names_from = id, values_from = values) %>%
unnest(cols = c(PCP, MaxT, MinT), names_repair = "universal") %>% 
nest() %>% 
by_row(~write.csv(.$data, file = paste(.$names, ".csv", sep = ""), row.names=FALSE, quote=FALSE))

【讨论】:

    猜你喜欢
    • 2022-06-10
    • 2013-03-31
    • 1970-01-01
    • 2015-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多