小编Jaa*_*aap的帖子

data.table merge()与NA in列

我正在尝试连接两个表,其中连接的列具有一些NA值,以便在遇到NA时,记录用NA填充,即

鉴于:

> x = data.table(c(1,2,3,NA,5), c("a","b","c","d","e"))
> x
   V1 V2
1:  1  a
2:  2  b
3:  3  c
4: NA  d
5:  5  e

> y = data.table(c(NA,2,3,4,5), c("A","B","C","D","E"))
> y
   V1 V2
1: NA  A
2:  2  B
3:  3  C
4:  4  D
5:  5  E
Run Code Online (Sandbox Code Playgroud)

我希望我的输出是:

> z = data.table(c(NA,NA,1,2,3,4,5),c("d",NA,"a","b","c",NA,"e"),c(NA,"A",NA,"B","C","D","E"))
> z
   V1 V2 V3
1: NA  d NA
2: NA NA  A
3:  1  a NA
4:  2  b  B
5:  3  c  C …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

分隔两个不同的分隔符并截断

我有一个小问题,例如

a <- as_tibble(c("201.1, 202 (abc) 203, 204", "301 / 302.22 def, 303"))

  value                  
  <chr>                  
1 201.1, 202 (abc) 203, 204
2 301 / 302.22 def, 303    
Run Code Online (Sandbox Code Playgroud)

现在我想获得一个包含两列的 data.frame

[1,] 201.1  202
[2,] 301    302.22
Run Code Online (Sandbox Code Playgroud)

通过剪切第二个数字之后的所有内容(第一行中的 202,第二行中的 302.22)使用分隔符“,”或“/”分隔表达式的剩余部分以获得两列。

r delimiter strsplit

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

根据连续行之间的时间差对数据帧中的行进行分组

我有这种类型的数据框

YEAR   MONTH  DAY  HOUR       LON      LAT

1860     10      3   13      -19.50   3.00          
1860     10      3   17      -19.50   4.00                          
1860     10      3   21      -19.50   5.00                          
1860     10      5   5       -20.50   6.00                          
1860     10      5   13      -21.50   7.00                          
1860     10      5   17      -21.50   8.00                          
1860     10      6   1       -22.50   9.00                          
1860     10      6   5       -22.50   10.00                         
1860     12      5   9       -22.50   -7.00                         
1860     12      5   18      -23.50   -8.00                         
1860     12      5   22      -23.50   -9.00                         
1860     12      6   6       -24.50   -10.00                                    
1860 …
Run Code Online (Sandbox Code Playgroud)

r subset dataframe

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

在R中找不到缺少数据的行

我有一个数据框

Id  Name                      Affiliation
9   Ernest Jordan   
14  K. MORIBE   
15  D. Jakominich   
25  William H. Nailon   
37  P. B. Littlewood      Cavendish Laboratory|Cambridge University
44  A. Kuroiwa            Department of Molecular Biology|School of Science|Nagoya 
75  M. Till-berg    
Run Code Online (Sandbox Code Playgroud)

我想知道有多少行是不完整的,即缺少数据.在这种情况下,ID(9,14,15,25,75)的行有关联.所以在这种情况下结果应该是5.

我试过了

dim(author_data[complete.cases(author_data),])
Run Code Online (Sandbox Code Playgroud)

但它没有显示正确的结果.它输出为

7  3
Run Code Online (Sandbox Code Playgroud)

即7行3列

谢谢

r missing-data dataframe

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

使用城市和州绘制ggmap

我有一张美国地图,准备出发:

mygggmap <- get_map(location = "United States", zoom = 4) g <- ggmap(myggmap)

下一步是绘制一些主要城市.

我知道我可以创建一个图层来绘制我的主要城市的经度和纬度,例如:
g <- g + geom_density2d(data = citydata, aes(x = lon, y = lat))

但我想知道是否有办法按实际名称,城市和州进行策划?由于ggmap是通过Google Map API分层的,这应该是可能的,对吗?

google-maps r ggplot2 ggmap

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

将列中的值替换为同一数据帧中另一列的相应值

我试图匹配一列中的特定值,并将其替换为另一列(同一行)中的相应值.这可能是很容易的......我一直在试图找到一个解决方案for loop,sub,subset,data.table但我还没有成功.必须有一个巧妙的方法来做到这一点.

示例数据,我们的目标是a在第一列中交换第二列中的相应值并再次输出列.

df <- data.frame(rbind(c('a','D'),c('H','W'),c('Q','E'),c('a','F'),c('U','P'),c('a','B')))

df$X1 <- as.character(df$X1)
df$X2 <- as.character(df$X2)

# not working
for (i in seq_along(df$X1)){
  a <- df$X1[i]
  b <- df$X2[i]
  x <- ifelse(a[i=='a'], a[i]<-b[i], do.nothing )
  print(x)
}
Run Code Online (Sandbox Code Playgroud)

输出就像这样;

   X1 X2
1  D  a
2  H  W
3  Q  E
4  F  a
5  U  P
6  B  a
Run Code Online (Sandbox Code Playgroud)

(不需要开关).这是我感兴趣的第一栏.

任何指针都将不胜感激,谢谢!

replace r pattern-matching dataframe

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

如何将连字符后的小写字母替换为大写字母

在我的数据框中,我有一个列,其中包含小写的议会成员的姓氏。我将第一个字母替换为大写(来自此答案):

# vector with names
lastname <- c("wortmann-kool", "mulder", "nistelrooij", "camp", "schaake", "veld", "lange", "oomen-ruijten")
# substituting first letter with uppercase
lastname <- gsub("^(\\w)(\\w+)", "\\U\\1\\L\\2", lastname, perl = TRUE)
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,有些名字带有连字符来分隔已婚女性的两个名字。如何将连字符后的第一个字母替换为大写?

regex r substitution uppercase

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

改变ggplot上的颜色

如果我生成一个ggplot:

 x <- rnorm( 10^3, mean=0, sd=1)
 y <- rnorm( 10^3, mean=0, sd=1)
 z=x^2+y^2
 df <- data.frame(x,y,z)
 ggplot(df)+geom_point(aes(x,y,color=z))
Run Code Online (Sandbox Code Playgroud)

默认情况下,这是以蓝色刻度绘制的.如何组合不同的颜色来制作新的比例?

r ggplot2

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

windows phone 8.1 invokescript

在Windows Phone 8中,您可以使用:

(string)browser.InvokeScript("eval", "document.title.toString()"); 
Run Code Online (Sandbox Code Playgroud)

从浏览器返回页面标题.

您将如何在新的WP8.1 API中执行此操作

c# windows-phone-8 windows-phone-8.1

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

如何将std :: vector <std :: vector <double >>转换为Rcpp :: Dataframe或Rcpp :: NumericMatrix

我有一个std::vector<std::vector<double>>,我想将其转换为a Rcpp::DataFrame或a Rcpp::NumericMatrix.

我目前的解决方案看起来像这样,它远非理想; 它产生了一个数字列表.

RcppExport SEXP Foo(...)
{
    std::vector<std::vector<double>> result;

    /// ... Do some work.

    return Rcpp::wrap(result);
}
Run Code Online (Sandbox Code Playgroud)

注意事项:不会修复列数和行数.在每次运行之间,这些可以改变 我之所以提到这一点是因为到目前为止我发现的许多解决方案都涉及在编译时知道列.

如果可能的话,我希望解决方案完全包含在c ++中; 即R用户应该能够调用该函数,而不必将结果处理成数据帧或矩阵.

c++ r rcpp

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