小编Tom*_*Tom的帖子

在 R 中翻译文本

当寻找翻译其中文本的解决方案时R,我得到了很多相当旧的答案,建议使用该包translateR。我找到的最好的答案就是这个

答案已经有 6 年历史了,同时translateR不再是 CRAN 存储库的一部分(有人知道为什么吗?)。我想知道现在是否有更好的选择,使用 CRAN 存储库中的包。

我的示例数据如下;

translate <- data.frame(sentences = c("This needs to be translated to Dutch",
               "This also needs to be translated to Dutch",
               "Just as this one has to"))
Run Code Online (Sandbox Code Playgroud)

当前在 R 中翻译文本的最佳选项是什么?

translation r google-translate

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

使用 data.table 计算每个子组的比例

对于以下简单数据集;

   row  country year
     1  NLD     2005
     2  NLD     2005       
     3  BLG     2006
     4  BLG     2005
     5  GER     2005
     6  NLD     2007
     7  NLD     2005
     8  NLD     2008
Run Code Online (Sandbox Code Playgroud)

下面的代码:

df[, .N, by = list(country, year)][,prop := N/sum(N)]
Run Code Online (Sandbox Code Playgroud)

给出观测值占观测值总数的比例。然而我想要的是衡量每个国家的比例。我应该如何调整这段代码才能给出正确的比例?

期望的输出:

   row  country year  prop
     1  NLD     2005   0.6
     2  NLD     2005   0.6    
     3  BLG     2006   0.5
     4  BLG     2005   0.5
     5  GER     2005   1
     6  NLD     2007   0.2
     7  NLD     2005   0.6  
     8  NLD     2008   0.2
Run Code Online (Sandbox Code Playgroud)

r mean data.table

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

使用 roll = "nearest" 限制合并的范围

我有两个要合并的数据库。来自此链接:与 data.table 进行“模糊”和非模糊、多对一合并。我知道当没有直接匹配时,我可以将这些 data.tables 与最近可用的年份合​​并,如下所示:

  library(data.table)
  dfA <- fread("
  A   B   C   D   E   F   G   Z   iso   year   matchcode
  1   0   1   1   1   0   1   0   NLD   2010   NLD2010
  2   1   0   0   0   1   0   1   NLD   2014   NLD2014
  3   0   0   0   1   1   0   0   AUS   2010   AUS2010
  4   1   0   1   0   0   1   0   AUS   2006   AUS2006
  5   0   1   0   1   0   1   1   USA   2008   USA2008
  6   0   0 …
Run Code Online (Sandbox Code Playgroud)

merge r data.table fuzzyjoin

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

在自定义 R-markdown 函数中动态命名输出文件

我在这里找到了下面的功能。它工作得很好,但我想'analysis.docx'使用文档标题、作者和当前日期动态命名输出文件。

title: thetitle
author: myinititals
date: "`r Sys.Date()`"
knit: (function(inputFile, encoding) { 
          out_dir <- 'test';
          rmarkdown::render(inputFile,
                            encoding=encoding, 
                            output_file=file.path(dirname(inputFile), out_dir, 'analysis.docx')) })
Run Code Online (Sandbox Code Playgroud)

在这种情况下如何使'analysis.docx'动态化?

我在这里找到了更多信息,但不是我想要的答案。

r knitr r-markdown

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

在 ggplot2 中将最后一对列远离其他列

我有如下数据:

library(data.table)
library(ggplot2)
library(dplyr)
library(tidyverse)
library(ggsignif)

graph <- structure(list(Constraint = structure(c(4L, 2L, 3L, 1L, 5L, 4L, 
2L, 3L, 1L, 5L), .Label = c("Major Constraint", "Minor Constraint", 
"Moderate Constraint", "No Constraint", "Total"), class = "factor"), 
    `Observation for Crime = 0` = c(3124, 2484, 3511, 4646, 13765, 
    3124, 2484, 3511, 4646, 13765), `Observation for Crime = 1` = c(762, 
    629, 1118, 1677, 4186, 762, 629, 1118, 1677, 4186), `Total Observations` = c(3886, 
    3113, 4629, 6323, 17951, 3886, 3113, 4629, 6323, 17951), 
    variable …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

获取列的所有 NA 值的行号

我有数据如下:

df <- as.data.frame(c(1,2,NA,4,5))
names(df)[1] <- "first_column"

  first_column
1            1
2            2
3           NA
4            4
5            5
Run Code Online (Sandbox Code Playgroud)

我想获取 is 的所有行号first_columnNA所以3

我找到了查找其他值的方法,即which(grepl(2, df$first_column)) 但不是NA。包含NA值显然相当麻烦(链接)。有没有更简单的方法来做到这一点?

有任何想法吗?

r na grepl

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

将向量添加到列,而不指定其他列

我想将向量添加到列中,而不指定其他列。我有示例数据如下。

library(data.table)
dat <- fread("A B C D
              one 2 three four
              two 3 NA    one")

vector_to_add <- c("five", "six")
Run Code Online (Sandbox Code Playgroud)

期望的输出:

out <- fread("A B C D
              one 2 three four
              two 3 NA    one
              NA  NA five  NA
              NA  NA six   NA")
Run Code Online (Sandbox Code Playgroud)

我看到一些答案使用向量用于行绑定的方法:

row3 < c(NA, NA, "five", NA)
Run Code Online (Sandbox Code Playgroud)

然而,我想找到一个没有指定整行的解决方案。

编辑NA:发布后不久,我意识到对于向量中的每个条目,采用现有行、创建 row 并替换要添加向量的列中的值可能是最简单的。然而,我认为这仍然是一个相当麻烦的解决方案。

r vector rbind data.table

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

将data.table的列转换为同一data.table中的列表

我有一个data.table如下:

library(data.table)  
DT <- fread(
    "A   B  C  D  E  F  iso   year   
     0   A   1   1  NA  NA  NLD   2009   
     1   Y   0   2  NA  NA  NLD   2009   
     0   Q   1   3  NA  NA  AUS   2011   
     1   NA  0   4  NA  NA  AUS   2011   
     0   0   1   7  NA  NA  NLD   2008   
     1   1   1   1  NA  NA  NLD   2008   
     0   1   1   3  NA  NA  AUS   2012   
     0   NA  1   NA  1  NA  ECU   2009   
     1   NA  0 …
Run Code Online (Sandbox Code Playgroud)

r list data.table

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

重命名因子水平而不参考因子名称

我的数据具有非常混乱的因子级别名称,有时超过一个句子长。因此,我更愿意按数字引用级别来重命名它们(而不是通常的因子级别名称)。对于下面的示例数据,如何在不提及“砾石”、“砂岩”或“粉砂岩”的情况下重命名因子级别(假设为“G”、“S1”和“S2”)?

df <- data.frame(x = c("gravel", "sandstone", "siltstone"))
Run Code Online (Sandbox Code Playgroud)

r rename

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