小编LeG*_*sII的帖子

R将数据写入xlsm

一个数据表:例如

> aDT <- data.table(colA = "apple", colB = "banana", colC = "4")
> aDT
    colA   colB colC
1: apple banana    4
Run Code Online (Sandbox Code Playgroud)

需要将此表写入 xlsm 中的工作表(它有宏)。

尝试多种方法来连接到 xlsm。全部失败了。

# Method 1
require(XLConnect)
wb <- loadWorkbook(filename = "sample.xlsm", create = FALSE)
Error: OutOfMemoryError (Java): Java heap space

# Method 2
require(openxlsx)
wb <- loadWorkbook(xlsxFile = "sample.xlsm")
Error in grepl(target, commentsXML) : invalid 'pattern' argument

# Method 3
require(openxlsx)
wb <- loadWorkbook(file = "sample.xlsm")
Error …
Run Code Online (Sandbox Code Playgroud)

r xlsm xlconnect

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

data.table 按组填充其他行的缺失值

# have
> aDT <- data.table(colA = c(1,1,1,1,2,2,2,2,3,3,3,3), colB = c(4,NA,NA,1,4,3,NA,NA,4,NA,2,NA))
> aDT
    colA colB
 1:    1    4
 2:    1   NA
 3:    1   NA
 4:    1    1
 5:    2    4
 6:    2    3
 7:    2   NA
 8:    2   NA
 9:    3    4
10:    3   NA
11:    3    2
12:    3   NA
# want
> bDT <- data.table(colA = c(1,1,1,1,2,2,2,2,3,3,3,3), colB = c(4,1,1,1,4,3,3,3,4,2,2,2))
> bDT
    colA colB
 1:    1    4
 2:    1    1
 3:    1    1
 4:    1    1
 5:    2 …
Run Code Online (Sandbox Code Playgroud)

row r na data.table

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

data.table按索引重新排序列

我有:

> aDT <- data.table(col5 = 5, col1 = 1, col2 = 2, col4 = 4, col3 = 3)
> aDT
   col5 col1 col2 col4 col3
1:    5    1    2    4    3
Run Code Online (Sandbox Code Playgroud)

以及:

index1 <- c(5,1,2)
index2 <- c(4,3)
Run Code Online (Sandbox Code Playgroud)

我需要:

> aDT <- data.table(col1 = 1, col2 = 2, col3 = 3, col4 = 4, col5 = 5)
> aDT
   col1 col2 col3 col4 col5
1:    1    2    3    4    5
Run Code Online (Sandbox Code Playgroud)

试过:

> setcolorder(aDT,c(index1,index2))
> aDT
   col3 col5 …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

R data.table按组对多个列中的唯一值进行计数

> require(data.table)
> have <- data.table(ID = c(1,1,1,2,2)
+                      , colA = c("A","B","A","A","A")
+                      , colB = c("C","A","B","B","C"))
> have
   ID colA colB
1:  1    A    C
2:  1    B    A
3:  1    A    B
4:  2    A    B
5:  2    A    C
> want <- data.table(ID = c(1,2), UnN = c(3,3))
> want
   ID UnN
1:  1   3
2:  2   3
Run Code Online (Sandbox Code Playgroud)

我有一个数据表“ have”,我想按多个列“ colA”和“ colB”中的组“ ID”对唯一值进行计数。如何实现呢?

不知道为什么以下内容不起作用:

have[, UnN = uniqueN(c("colA","colB")), by = C("ID")]
Run Code Online (Sandbox Code Playgroud)

r unique count data.table

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

R - 测试字符串向量是否包含另一个列表的任何元素

我有:

> lst_A <- c("TET","RNR")
> DT_result <- data.table(lst_B = c("RNR_B","BC_TET"))
Run Code Online (Sandbox Code Playgroud)

我想要:

> DT_result <- data.table(lst_B = c("RNR_B","BC_TET"), result = c(TRUE,TRUE))
> DT_result
    lst_B result
1:  RNR_B   TRUE
2: BC_TET   TRUE
Run Code Online (Sandbox Code Playgroud)

基本上,对于'lst_B'中的每个元素,如果它包含'lst_A'中的任何元素,则TRUE否则为FALSE.

string r contain grepl data.table

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

使用自定义名称进行转置/重塑

要创建所需的样本:

require(pacman)
p_load(data.table)
DT_start <- data.table(ID = c(1,1,1,2,2,2), valueA = c("a1","a2","a3","b1","b2","b3"), valueB = c("A1","A2","A3","B1","B2","B3"))
DT_end <- data.table(ID = c(1,2)
                     , T01_valueA = c("a1","b1")
                     , T02_valueA = c("a2","b2")
                     , T03_valueA = c("a3","b3")
                     , T01_valueB = c("A1","B1")
                     , T02_valueB = c("A2","B2")
                     , T03_valueB = c("A3","B3"))
setcolorder(DT_end, c("ID","T01_valueA","T01_valueB","T02_valueA","T02_valueB","T03_valueA","T03_valueB"))
Run Code Online (Sandbox Code Playgroud)

我有:

> DT_start
   ID valueA valueB
1:  1     a1     A1
2:  1     a2     A2
3:  1     a3     A3
4:  2     b1     B1
5:  2     b2     B2
6:  2     b3     B3
Run Code Online (Sandbox Code Playgroud)

我需要:

> DT_end
   ID T01_valueA …
Run Code Online (Sandbox Code Playgroud)

transpose r reshape data.table

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

regexp R-提取逗号之间的字符串

由于我的csv文件已损坏,因此我使用以下命令将其读入R:

dataDT <- data.table::fread(".../test.csv", sep = NULL)
Run Code Online (Sandbox Code Playgroud)

它为数据集提供了类似的内容:

dataDT <- data.table("ColA,ColB,ColC,ColD" = c("1,10,some text... , some text,,20190801",
                                               "2,22,some text... , some text,,20190801",
                                               "3,30,some text... , some text,,20170601"))
dataDT
> dataDT
                       ColA,ColB,ColC,ColD
1: 1,10,some text... , some text,,20190801
2: 2,22,some text... , some text,,20190801
3: 3,30,some text... , some text,,20170601
Run Code Online (Sandbox Code Playgroud)

现在,我想要将每行中的字符串分成4个新列

targetDT <- data.table(ColA = c(1,2,3), 
                       ColB = c(10,22,30), 
                       ColC = c("some text... , some text,", "some text... , some text,", "some text... , some text,"),
                       ColD = c("20190801","20190801",'20170601')) …
Run Code Online (Sandbox Code Playgroud)

regex r gsub data.table

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

R data.table 合并同一个表中的两列

我有:

inputDT <- data.table(COL1 = c(1, NA, NA), COL1 = c(NA, 2, NA), COL1 = c(NA, NA, 3))
inputDT
   COL1 COL1 COL1
1:    1   NA   NA
2:   NA    2   NA
3:   NA   NA    3
Run Code Online (Sandbox Code Playgroud)

我想要

outputDT <- data.table(COL1 = c(1,2,3))
outputDT
   COL1
1:    1
2:    2
3:    3
Run Code Online (Sandbox Code Playgroud)

本质上,我有一个包含多个名称相同(值互斥)的列的 data.table,我只需要生成一列来组合这些列。

如何实现?

merge r data.table

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

标签 统计

r ×8

data.table ×7

contain ×1

count ×1

grepl ×1

gsub ×1

merge ×1

na ×1

regex ×1

reshape ×1

row ×1

string ×1

transpose ×1

unique ×1

xlconnect ×1

xlsm ×1