小编Ach*_*hak的帖子

使用VB将Excel工作表保存为包含文件名+工作表名称的CSV文件

我是VB编码的新手,我正在尝试将多个excel文件工作表保存到csv,我不知道为多个工作表执行此操作,但我找到了一种方法来处理单个文件.我在这个网站上找到了对我正在尝试的内容非常有用的代码,唯一的问题是文件是用工作表名称保存的,但我试图用原始文件和工作表名称保存它们filename_worksheet name,我试图自己这样做,但不断收到错误,你能告诉我我做错了什么吗?

我使用的代码如下:

   Public Sub SaveWorksheetsAsCsv()

   Dim WS As Excel.Worksheet
   Dim SaveToDirectory As String

   Dim CurrentWorkbook As String
   Dim CurrentFormat As Long

   CurrentWorkbook = ThisWorkbook.FullName
   CurrentFormat = ThisWorkbook.FileFormat
   ' Store current details for the workbook
   SaveToDirectory = "H:\test\"
   For Each WS In ThisWorkbook.Worksheets
   WS.SaveAs SaveToDirectory & WS.Name, xlCSV
   Next

Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat
Application.DisplayAlerts = True
' Temporarily turn alerts off to prevent the user being prompted
'  about overwriting the original file.

End Sub 
Run Code Online (Sandbox Code Playgroud)

csv excel vba excel-vba

25
推荐指数
2
解决办法
19万
查看次数

使用透明背景保存R图

我试图用透明背景和png格式保存ar情节.我在stackoverflow中遵循了几个推荐的方法,但每次我仍然得到白色背景.我的考试日期如下:

structure(list(wd = c(7.5, 22.5, 37.5, 52.5, 67.5, 82.5, 97.5, 
112.5, 127.5, 142.5, 157.5, 172.5, 187.5, 202.5, 217.5, 232.5, 
247.5, 262.5, 277.5, 292.5, 307.5, 322.5, 337.5, 352.5), MP1 = c(17.6, 
21, 20.5, 26.5, 32.7, 38.3, 40.7, 41.8, 41.6, 44.4, 52.4, 62.5, 
70.7, 74.4, 71.1, 66.9, 66.9, 69.4, 69.4, 67.4, 63.4, 55.9, 43.9, 
33.9)), .Names = c("wd", "MP1"), class = "data.frame", row.names = c(NA, 
-24L))
Run Code Online (Sandbox Code Playgroud)

我尝试了两种方法但都无法删除背景.

方法1:

library(ggplot2)
library(cairo)

ggplot(dat, aes(wd, MP1)) +
  coord_polar( start = 0, direction = 1) + …
Run Code Online (Sandbox Code Playgroud)

plot r cairo ggplot2

10
推荐指数
1
解决办法
6943
查看次数

ggplot2时间序列图,带有颜色编码的风向箭头

下午好,

我正在尝试制作一个时间序列图,箭头显示风向,并着色显示风速强度.最终我试图获得这样的情节(只是我在网上找到的一个示例图片):

在此输入图像描述

我设法找到一个类似的帖子(见下文),我试图遵循,但我坚持正确显示风向箭头.

一篇类似的帖子: ggplot2带箭头/向量的风时间序列

我到目前为止所编的代码如下:

require(ggplot2)
require(scales)
require(gridExtra)
require(lubridate)

dat <- data.frame(datetime = ISOdatetime(2013,08,04,0,0,0) +
                     seq(0:23)*60*60, pollutant = runif(24, 25, 75))

## create wind speed data
dat$ws <- runif(nrow(dat), 0 , 15 )

## create wind direction data
dat$wd <- runif(nrow(dat), 0 , 360 )

# define an end point for geom_segment
dat$x.end <- dat$datetime + minutes(60)

ggplot(data = dat, aes(x = datetime, y = pollutant)) +
  geom_line() +
  geom_segment(data = dat,
               size = 1,
               aes(x = …
Run Code Online (Sandbox Code Playgroud)

plot r time-series ggplot2 rgraph

6
推荐指数
1
解决办法
2903
查看次数

将为单个文件准备的R脚本应用于目录中的多个文件

我准备了ar脚本,并尝试在目前使用5个示例文件的多个文件中应用相同的代码(但尝试学习使用超过100的文件)以了解如何使用多个文件.很抱歉我写的代码质量,因为我正在学习R,我相信有更好,更有条理的方式来编写我准备的内容.(请参阅下面的示例数据和我的代码)

我想要实现的是在所有文件中运行我的代码并将它们写回到同一目录或名称略有改动的不同目录.

我尝试使用以下内容读取每个文件,并在{}功能区中添加所有代码:

filenames = dir(pattern=".csv") 

for( i in 1:length(filenames) ){}
Run Code Online (Sandbox Code Playgroud)

但它不起作用,我这一步我做错了,我只是想知道你是否可以给我一些关于我应该如何处理多个文件的指导?

我准备了一个样本数据集,以便我可以向您显示我所拥有的代码,以下两张图片显示了我读取后的数据集以及运行所有代码后数据集的外观:

刚读完文件后

运行代码后

我的示例数据文件:

> dput (df)
structure(list(X = structure(c(3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L), .Label = c("", "w", "wo"), class = "factor"), 
    X.1 = structure(c(1L, 11L, 18L, 9L, 26L, 30L, 22L, 5L, 14L, 
    15L, 6L, 23L, 27L, 19L, 2L, 10L, 16L, 7L, 24L, 28L, 20L, …
Run Code Online (Sandbox Code Playgroud)

loops r

5
推荐指数
2
解决办法
5780
查看次数

在数据框的底部创建一个新行并添加列总和

我正在使用以下代码从工作目录中读取csv文件:

df <- read.csv("test1.csv", header = TRUE,skip =6, nrow =
length(count.fields("test1.csv")) - 12)
Run Code Online (Sandbox Code Playgroud)

然后使用以下代码更改列名:

colnames(df) = c("type","date","v1","v2","v3","v4","v5","v6","v7","v8","v9","v10","v11","v12","v13","v14","v15","v16","v17","v18","v19","v20","v21","v22","v23","v24","total")
Run Code Online (Sandbox Code Playgroud)

我的数据集维度是365行x 24列,我试图计算列(3:27)总和,并在数据框底部用总和创建一个新行.

data.frame看起来像这样:

在此输入图像描述

如果我尝试使用如下的一些示例数据进行测试,它可以正常工作:

x <- data.frame(x1 = c(3:8, 1:2), x2 = c(4:1, 2:5),x3 = c(3:8, 1:2), x4 = c(4:1, 2:5))
Run Code Online (Sandbox Code Playgroud)

x [9,(2:3)] < - apply(x,2,sum)

但是当我尝试使用我正在使用的csv文件时,我使用的代码如下:

x[366,(3:27)] <- apply(df, 2, sum)
Run Code Online (Sandbox Code Playgroud)

但它会出现如下错误:"FUN中的错误(newX [,i],...):参数的"类型"(字符)无效"

谁能告诉我如何解决这个问题?

r

4
推荐指数
1
解决办法
6590
查看次数

基于行内NA的数量的条件行删除

我希望根据以下两个条件从我的数据集中删除行:

  1. 如果连续3个单元格为NA或,则删除行
  2. 如果是四个或更多个细胞 NA

我的样本数据:

data <- rbind(c(1,1,2,3,4,2,3,2),
              c(NA,1, NA, 4,1,1,NA,2), 
              c(1,4,6,7,3,1,2,2), 
              c(NA,3, NA, 1,NA,2,NA,NA), 
              c(1,4, NA, NA,NA,4,3,2))
Run Code Online (Sandbox Code Playgroud)

我已经在现有问题中进行了研究,发现na.omit或者complete.cases可以删除行NA但是因为我有条件,做进一步研究我在现有问题中找到了以下代码:

data[! rowSums(is.na(data)) >4  , ]   
data[! rowSums(is.na(data)) ==3  , ]
Run Code Online (Sandbox Code Playgroud)

第一行完全满足我的第二个条件.第二行确实删除了三行NA但没有查找连续行并删除任何总共3行的行NA.例如:

> data
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,]    1    1    2    3    4    2    3    2
[2,]   NA    1   NA    4    1    1   NA    2
[3,]    1    4    6    7    3    1    2    2
[4,] …
Run Code Online (Sandbox Code Playgroud)

r list na

4
推荐指数
2
解决办法
660
查看次数

从网络源获取 R 中的数据作为数据框

我正在尝试使用 RCurl 包将一些空气污染背景数据作为 data.frame 直接加载到 R 中。

有问题的网站在下载 .csv 文件之前有 3 个下拉框可供选择,如下图所示:

在此处输入图片说明

我试图从下拉框中选择 3 个值,然后使用“下载 CSV”按钮将数据作为 data.frame 直接下载到 R 中。

我想下载特定站点的多年和多种污染物的不同组合。

在 StackOverflow 上的其他帖子中,我遇到getForm了 RCurl 包中的函数,但我不明白如何使用此函数控制 3 个下拉框。

数据源的 URL 是:http : //uk-air.defra.gov.uk/data/laqm-background-maps?year= 2011

csv r httr

4
推荐指数
1
解决办法
988
查看次数

循环遍历列的唯一值并创建多个列

我试图打破我以前的问题,并制定了一个计划,以不同的步骤实现我最终寻求的目标.目前,我正在尝试进行循环,以确定是否为每个独特的源打开了机械系统,如下面的第一个表中所示source.

例如,我给出了以下简介,告诉我4个季节中每个系统在典型工作日的系统开启时间.请注意,一些来源在一天中有多个时段,因此您可以看到堆栈2重复2个时段.

在此输入图像描述

我现在想要实现的是我已经创建了一些样本日期,并希望循环每个独特的源,并根据Profile表中提供的信息说明系统是否在特定时间打开或关闭.到目前为止,我所做的是使用以下代码创建下表:

在此输入图像描述

以下代码将创建上表:

# create dates table
dates =data.frame(dates=seq(
  from=as.POSIXct("2010-1-1 0:00", tz="UTC"),
  to=as.POSIXct("2012-12-31 23:00", tz="UTC"),
  by="hour"))  

# add year month day hour weekday column

dates$year <- format(dates[,1], "%Y") # year
dates$month <- format(dates[,1], "%m") # month
dates$day <- format(dates[,1], "%d") # day
dates$hour <- format(dates[,1], "%H") # hour
dates$weekday <- format(dates[,1], "%a") # weekday

# set system locale for reproducibility

Sys.setlocale(category = "LC_TIME", locale = "en_US.UTF-8")

# calculate season column

d = function(month_day) which(lut$month_day == …
Run Code Online (Sandbox Code Playgroud)

loops r dataframe dplyr data.table

3
推荐指数
1
解决办法
979
查看次数

从特定行开始读取目录中的多个文件

我试图从工作目录中读取R中的多个文件,并希望阅读从第7行读取每个文件.我不知道我怎么能这样做

我找到了如何用这个读取单个文件:

data = read.csv(file.choose (),  skip = 6 )  
Run Code Online (Sandbox Code Playgroud)

或者我可以读取这样的多个文件:

j = list.files()         
     d = lapply(j, read.csv)
Run Code Online (Sandbox Code Playgroud)

你能帮我解决一下如何从第7行开始阅读多个文件?

r

2
推荐指数
1
解决办法
2644
查看次数

使用特定日期格式为日期信息创建新列

亲爱的所有我正在处理一个有几年数据的文件,我正在尝试创建一个从日期coloumn(例如01/01/1997 12:00)读取年份和月份信息的aditional coloumn并创建一个新的coloumn一起月份和年份(例如Jan-97).

我不知道如何继续这个,但我想要编码的是下面图片中名为"new_date"的coloumn:

在此输入图像描述

我的样本数据:

Data <-
structure(list(date = structure(c(1L, 4L, 7L, 2L, 5L, 8L, 3L, 
6L, 9L), .Label = c("01/01/1997 12:00", "01/01/1998 15:00", "01/01/1999 18:00", 
"01/02/1997 13:00", "01/02/1998 16:00", "01/02/1999 19:00", "01/03/1997 14:00", 
"01/03/1998 17:00", "01/03/1999 19:00"), class = "factor"), value = c(29L, 
31L, 42L, 42L, 52L, 61L, 57L, 55L, 56L)), .Names = c("date", 
"value"), row.names = c(NA, -9L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)

如果你能告诉我如何处理这件事,我真的很感激.

r

1
推荐指数
1
解决办法
4873
查看次数

重塑数据集

我只是想知道你是否可以指导我如何根据特定标准重塑数据集以按小时排列,例如,我有以下示例数据集: 数据帧

我试图将数据集重塑为如下所示:

在此输入图像描述

我怎么能继续这个重塑呢?非常感谢.

My sample data:

data = structure(list(date = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L), .Label = "Jan-97", class = "factor"), day = c(1L, 
1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L), hour = c(1L, 2L, 
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L), Value = c(65L, 29L, 
31L, 42L, 42L, 52L, 61L, 57L, 55L, 52L, 57L, 46L)), .Names = c("date", 
"day", "hour", "Value"), class = "data.frame", row.names …
Run Code Online (Sandbox Code Playgroud)

r

1
推荐指数
1
解决办法
622
查看次数

在两个不匹配的表中创建具有匹配ID的新数据帧

我试图合并两个数据帧与ids,我想先合并所有匹配的ID,然后找到不匹配的,我发现合并函数可以合并公共ids.例如:

m1 = merge(df1, df2, by=c("id"))
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试使用与数据帧1不匹配的数据帧2的ID创建新的数据帧.

你能告诉我我应该找哪个命令吗?

例如:

我有以下两个数据集:

在此输入图像描述 DF1 在此输入图像描述DF2

我正在尝试使用df2中的ID而不是df1创建一个新的数据帧.例如,df2中的id ="a3"和"c3".

在此输入图像描述

我的样本数据:

    df1 =data.frame(id= c("a1","a2","b1","b2","c1","c2"), value= 1:6)
df2 =data.frame(id= c("a1","a2","a3","b1","c1","c3"), value= 7:12)
Run Code Online (Sandbox Code Playgroud)

非常感谢,阿燕

merge r dataframe

1
推荐指数
1
解决办法
4123
查看次数

标签 统计

r ×11

csv ×2

dataframe ×2

ggplot2 ×2

loops ×2

plot ×2

cairo ×1

data.table ×1

dplyr ×1

excel ×1

excel-vba ×1

httr ×1

list ×1

merge ×1

na ×1

rgraph ×1

time-series ×1

vba ×1