我有一个关于R中的xlsx包的查询.我知道如何使用包中的大多数函数,直到现在还没有遇到任何问题.我将首先显示我的代码然后问我的问题.
#Code-Section1:
library(xlsx)
data1<-iris
data1<-data1[,c(5,1:4)]
wb <- createWorkbook()
sheet1 <- createSheet(wb, sheetName="Sheet1")
addDataFrame(data1, sheet1, startRow=1, startColumn=1,row.names=FALSE)
saveWorkbook(wb, file="test.xlsx")
rm(data1);rm(sheet1);rm(wb)
#Code-Section1-end:
Run Code Online (Sandbox Code Playgroud)
这部分只是简单地获取虹膜数据集并将其放入名为Sheet.xlsx的excel电子表格中的Sheet1中.现在在Excel中我决定通过添加总行来向电子表格添加更多内容,因此excel电子表格的最后两行是:
virginica 5.9 3.0 5.1 1.8
876.5 458.6 563.7 179.9
Run Code Online (Sandbox Code Playgroud)
我要做的另一件事是在电子表格中再添加4列,其中包含行总数中每个数字的百分比.接下来,我想将test.xlsx加载到R工作簿中.我定义了一个名为temp的新数据框,带有一些随机的正常值.我的目的是更新test.xlsx文件中的数字,以便行总数和百分比随后也会更改.更新的电子表格的最后两行应该是不同的,具体取决于rnorm(150,5,1)值的输出.我将数据框保存到名为testa.xlsx的新电子表格中.值已更新,但由于某种原因,行总数和百分比保持不变,即使其单元格的值仍为"= sum(b2:b151)"或"= b2/b $ 152".
#Code-Section2:
temp <- data.frame(Sepal.Length=rnorm(150,5,1), Sepal.Width=rnorm(150,5,1), Petal.Length=rnorm(150,5,1), Petal.Width=rnorm(150,5,1))
wb<-loadWorkbook("test.xlsx")
f<-getSheets(wb)[[1]]
addDataFrame(temp, sheet=f, startRow=2, startColumn=2,row.names=FALSE,col.names=FALSE)
saveWorkbook(wb, file="testa.xlsx")
#Code-Section2-end:
Run Code Online (Sandbox Code Playgroud)
因此,我的问题是,如何加载工作簿,更新数字,以便随后更新其中包含公式的单元格,然后将其保存到新的Excel文件中.我可以用另一种方式做到这一点,但它需要更多的步骤,我不介意做,但只是更新数字,所以其他单元格将改变将是如此方便.与我发布的每个帖子一样,请原谅任何语法错误,如果您认为有必要,请随时更改此消息.
我想读一个大约110,000,000行和8列的大型ido文件.列由2个整数列和6个逻辑列组成.分隔符"|"在文件中使用.我尝试过使用read.big.matrix,它花了很长时间.我也尝试过dumpDf,RAM耗尽了.我试过ff,我听说这是一个很好的包,我正在努力解决错误.如果我能以某种方式阅读它,我想用这个表做一些分析.如果有人有任何建议会很棒.亲切的问候,洛尔坎
我是R中data.table包的新手.Data.table的版本是1.8.2.
我的数据表有大约2100万行,所以我很乐意使用数据表方法来解决我的问题,因为这是现在处理大数据的方法.以下是示例数据和代码:
samp_data <- data.frame(user1 = c(24, 24, 24, 56, 75, 75),
user2 = c(43, 43, 57, 34, 61, 61),
amount1 = c(1, 4, 3, 2, 6, 8),
amount2 = c(4, 7, 9, 3, 5, 6),
PURCH_DATE_1 = as.Date(c("2012-01-01", "2012-04-29",
"2012-03-02", "2012-06-15", "2012-03-17", "2012-09-25")),
PURCH_DATE_2 = as.Date(c("2012-04-01", "2012-01-25",
"2012-05-21","2012-08-18", "2012-04-03", "2012-10-29")))
samp_data$DIFF_DAYS <- abs(as.numeric(samp_data$PURCH_DATE_1-
samp_data$PURCH_DATE_2))
samp_data_new<-data.table(samp_data)
Run Code Online (Sandbox Code Playgroud)
我想找回一个包含7个原始列但在user1和user2列中有重复对的数据表,将保留DIFF_DAYS列中具有最小值的行.
假设我把你们中的一些人与我想要的东西混为一谈,下面的代码包含了所需的输出:
samp_data_desired<-data.frame(user1=c(24,24,56,75),user2=c(43,57,34,61),
amount1=c(1,3,2,6),amount2=c(4,9,3,5),
PURCH_DATE_1=as.Date(c("2012-01-01","2012-03-02",
"2012-06-15","2012-03-17")),
PURCH_DATE_2=as.Date(c("2012-04-01","2012-05-21",
"2012-08-18","2012-04-03")),
DIFF_DAYS=c(91,80,64,17))
Run Code Online (Sandbox Code Playgroud)
我知道如何执行简单的聚合以使用DT [,min(col1),by = user1]想法找到每个user1的均值,最小值和最大值,但我无法成功使用唯一或重复的函数.我试过了:
samp_data_check <- data.table(samp_data, key=c("user1", "user2",
"amount1", "amount2", "PURCH_DATE_1",
"PURCH_DATE_2"))
Run Code Online (Sandbox Code Playgroud)
和
samp_data_test …Run Code Online (Sandbox Code Playgroud)