我有一个数据表:例如
> 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) # 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) 我有:
> 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) > 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) 我有:
> 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.
要创建所需的样本:
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) 由于我的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) 我有:
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,我只需要生成一列来组合这些列。
如何实现?