小编Asa*_*yat的帖子

"by"data.table中的空因子

我有一个data.table,其因子列具有空白级别.我需要得到行计数和其他变量的总和,所有变量都按多个因素分组,包括空级别的变量.我的问题是类似这样的一个,但在这里我需要计数多因素.

例如,让data.table为:

library('data.table')

dtr <- data.table(v1=sample(1:15), 
v2=factor(sample(letters[1:3], 15, replace = TRUE),levels=letters[1:5]),
v3=sample(c("yes", "no"), 15, replace = TRUE))
Run Code Online (Sandbox Code Playgroud)

我想做以下事情:

dtr[,list(freq=.N,mm=sum(v1,na.rm=T)),by=list(v2,v3)]

#Output is:
   v2  v3 freq mm
1:  b yes    4 22
2:  b  no    1 13
3:  c  no    3 10
4:  a  no    4 49
5:  c yes    1 10
6:  a yes    2 16
Run Code Online (Sandbox Code Playgroud)

我希望输出包括v2的空级别("d"和"e"),如同table(dtr$v2,dtr$v3),所以最终输出应该看起来(顺序无关紧要):

   v2  v3 freq mm
1:  b yes    4 22
2:  b  no    1 13
3:  c  no    3 10
4: …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

Shiny DT:excel中的格式日期列,通过按钮扩展名

我有一个数据表,其日期列显示UTC时区.使用DT的最后一个开发版本,可以选择将日期列转换为语言环境字符串,一切都在闪亮的webapp中很好地显示.但是,如果用户将通过按钮扩展名下载表,则日期列将以UTC时区(并且格式不可读)导出

library(DT)
library(shiny)

df <- data.frame(a = 1:100, b = 1:100, 
             d=seq(as.POSIXct("2017-08-23 10:00:00"), as.POSIXct("2017-11-30 10:00:00"), by = "days"))

ui <- fluidPage(
  dataTableOutput("table")
)

server <- function(input, output){

  output$table <- DT::renderDataTable({
    datatable(df, 
              extensions = c("Buttons"), 
              options = list(dom = 'Bfrtip',
                             buttons = list("csv",list(extend='excel',filename="DF"))
              )) %>% formatDate(3, "toLocaleString", params = list('fr-FR'))
  })

}

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

因此,如果本地操作系统时区是+5,它将显示"23/08/2017 à 10:00:00"在一个闪亮的webapp,但"2017-08-23T05:00:00Z"在excel文件中.有什么方法可以格式化出口吗?

r shiny dt

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

R tm包:utf-8文本

我想在utf-8中为非英语文本创建一个wordcloud(实际上,它是用哈萨克语).

文本在tm包的检查功能中完全显示.但是,当我搜索单词频率时,所有内容都显示不正确:

问题是文本显示的是编码字符而不是单词.西里尔字符正确显示.通常,wordcloud变得一团糟.

有可能以某种方式为tm函数分配编码吗?我试过这个,但文本本身很好,问题是使用tm包.

让示例文本为:

Оларман - әлемелдеріментерезесітеңңатынасқұрып,әлемкартасынанойыптұрыпорыналатынТәуелсізМемлекетатануеді.Оларман - тұрмысыбақуатты,түтінітүзуұшқан,ұрпағыертеңінесенімменқарайтынбақыттыЕлболуеді.Бізармандардыақиқатқаайналдырдық.МәңгілікЕлдіңіргетасынқаладық.Менқоғамда«Қазақелініңңлттықидеясықандайболуыкерек?»дегенсауалжиіталқығатүсетінінкөріпжүрмін.Бізүшінболашағымызғабағдарететін,ұлттыұйыстырып,ұлымақсаттарғажетелейтінидеябар.Ол - МәңгілікЕлидеясы.ТәуелсіздікпенбіргехалқымызМәңгілікМұраттарынақолжеткізді.

我的简单代码是:(基于onertipaday.blogspot.com教程:)

require(tm)
require(wordcloud)
text<-readLines("text.txt", encoding="UTF-8")
ap.corpus <- Corpus(DataframeSource(data.frame(text)))
ap.corpus <- tm_map(ap.corpus, removePunctuation)
ap.corpus <- tm_map(ap.corpus, tolower)
ap.tdm <- TermDocumentMatrix(ap.corpus)
ap.m <- as.matrix(ap.tdm)
ap.v <- sort(rowSums(ap.m),decreasing=TRUE)
ap.d <- data.frame(word = names(ap.v),freq=ap.v)
table(ap.d$freq)

1  2 
44  4 

findFreqTerms(ap.tdm, lowfreq=2)

[1] "<U+04D9>???"            "?????"                  "???"                   
[4] "?<U+04D9><U+04A3>?????"
Run Code Online (Sandbox Code Playgroud)

这些词应该是:"Әлем",арман","еді","мәңгілік".它们在inspect(ap.corpus)输出中正确显示.

非常感谢任何帮助!:)

r utf-8 tm

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

标签 统计

r ×3

data.table ×1

dt ×1

shiny ×1

tm ×1

utf-8 ×1