小编Cha*_*ase的帖子

mapply回收论点

我编写了一个函数,它将基数为10的数字转换为另一个基数(我只对基数2 - 9感兴趣).我目前将基数10转换为基数2的函数如下:

cb2 <- function(num){
    td<-{}
    a <- {}
    while (num 2 > 0 ){
        a <- num %% 2
        td <- paste(td,a, sep="")
        num <- as.integer(num / 2)              
    }   
    return(td)  
} 
Run Code Online (Sandbox Code Playgroud)

用法是:

sapply(1:10, cb2)
Run Code Online (Sandbox Code Playgroud)

我想概括这个函数,并将首选的基数包含在函数的参数中,ala ...

convertbase <- function(num, base){
    td<-{}
    a <- {}
    while (num / base > 0 ){
        a <- num %% base
        td <- paste(td,a, sep="")
        num <- as.integer(num / base)               
    }   
    return(td)  
}
Run Code Online (Sandbox Code Playgroud)

如果我只对转换成2-10基础的单个数字感兴趣,那么一切都很好:

mapply(convertbase, 10, 2:10)
Run Code Online (Sandbox Code Playgroud)

但是,如果我想要基数2:10的数字1:10,我会遇到问题:

mapply(convertbase, 1:10, 2:10)
Warning message: …
Run Code Online (Sandbox Code Playgroud)

r

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

一次操作多个列

一次操作多列(或行)的编程方式是什么?考虑这个例子:

df2 <- data.frame(a = 1:10, b = 5:14, c = 10:1, d = 14:5)
Run Code Online (Sandbox Code Playgroud)

我想创建两个包含a/b和c/d比率的新列.为简单起见,我们假设所有列之间的空间关系是一致的.只需要制作两列,就可以这样做:

df2$ab <- with(df2, a/b)
df2$cd <- with(df2, c/d)
Run Code Online (Sandbox Code Playgroud)

要么

df2 <- transform(df2, ab = a/b, cd = c/d)
Run Code Online (Sandbox Code Playgroud)

要创建最终产品,例如:

    a  b  c  d        ab        cd
1   1  5 10 14 0.2000000 0.7142857
2   2  6  9 13 0.3333333 0.6923077
3   3  7  8 12 0.4285714 0.6666667
4   4  8  7 11 0.5000000 0.6363636
5   5  9  6 10 0.5555556 0.6000000
6   6 10  5 …
Run Code Online (Sandbox Code Playgroud)

r

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

使用阈值识别重复数据

我正在处理蓝牙传感器数据,需要为每个唯一ID识别可能的重复读数.蓝牙传感器每五秒进行一次扫描,如果设备没有快速移动(即坐在交通中),可能会在后续读数中拾取相同的设备.如果该设备进行往返,则可能有多个来自同一设备的读数,但这些读数应分开几分钟.我无法解决如何摆脱重复数据的问题.如果macid匹配,我需要计算一个时差列.

数据格式如下:

          macid   time
00:03:7A:4D:F3:59  82333
00:03:7A:EF:58:6F 223556
00:03:7A:EF:58:6F 223601
00:03:7A:EF:58:6F 232731
00:03:7A:EF:58:6F 232736
00:05:4F:0B:45:F7 164141
Run Code Online (Sandbox Code Playgroud)

我需要创建:

            macid   time timediff
00:03:7A:4D:F3:59  82333 NA
00:03:7A:EF:58:6F 223556 NA
00:03:7A:EF:58:6F 223601 45
00:03:7A:EF:58:6F 232731 9310
00:03:7A:EF:58:6F 232736 5
00:05:4F:0B:45:F7 164141 NA
Run Code Online (Sandbox Code Playgroud)

我对此的第一次尝试非常缓慢且无法实现:

dedupeIDs <- function (zz) {
  #Order by macid and then time
  zz <- zz[order(zz$macid, zz$time) ,]

  zz$timediff <- c(999999, diff(zz$time))

  for (i in 2:nrow(zz)) {
   if (zz[i, "macid"] == zz[i - 1, "macid"]) {
    print("Different IDs")
   } else {
    zz[i, "timediff"] …
Run Code Online (Sandbox Code Playgroud)

r

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

如何使用R来计算Tanimoto/Jacquard Score作为距离矩阵

我想用Tanimoto/Jacquard Score作为距离矩阵来计算R中数组中行的距离矩阵.

有可能吗?如果是的话,你能介意教我怎么做吗?

r distance matrix

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

在另一列定义的间隔之间的列中汇总对象

我有一个这样的数据框:

  df
       A B
 [1,]  1 4
 [2,]  2 3
 [3,]  3 5
 [4,]  4 7
 [5,]  5 5
 [6,]  6 7
 [7,]  7 4
 [8,]  8 7
 [9,]  9 3
[10,] 10 7
Run Code Online (Sandbox Code Playgroud)

我需要将B列中的数字加到A列定义的特定区间之间.例如,将A中的数值加到A≥1和A <3之间.

我想用这个:

> sum(which(df$B[df$A>=1] & df$B[df$A<3]))
Run Code Online (Sandbox Code Playgroud)

但它没有给我我想要的东西.

r

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

数据列表到数据矩阵matlab/R.

我有一个数据矩阵,看起来像:

date ticker return

2/1  MSFT   .21

2/1  GOOG   .11

2/1  CSCO   .09

2/2  MSFT   .22

2/2  GOOG   .19

2/2  CSCO   .15
Run Code Online (Sandbox Code Playgroud)

我想将结构转移到类似的东西:

     MSFT   GOOG  CSCO

2/1  .21    .11   .09

2/2  .22    .19   .15
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以在Matlab/R中进行这种传输,而不是运行循环来获得这个?

matlab r matrix data-structures

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

仅根据R中的一列计算条件均值

我有这样的数据帧:

block   plot    date    data
1   1   aug 11.95171507
1   1   aug 18.41451063
1   2   aug 9.506155236
1   2   aug 13.26259947
1   3   aug 17.53616835
1   3   sep 15.40950767
2   1   sep 23.03616678
2   1   sep 17.07067258
2   2   sep 11.58278798
2   2   sep 13.15443304
Run Code Online (Sandbox Code Playgroud)

我想根据块和日期计算绘图中的数据平均值.最终,我希望有5种方法.谢谢你的帮助.

r

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

使用ggplot2创建包含预先汇总数据的条形图

我在名为binFile的文件中有以下数据

78 1
79 4
80 33
81 150
82 714
83 2663
84 8834
85 25679
86 63654
87 139731
88 265909
89 441686
90 639773
91 803736
92 879616
93 832181
94 682584
95 480228
96 290093
97 149299
98 65443
99 24487
100 7487
101 1835
102 402
103 59
104 10
Run Code Online (Sandbox Code Playgroud)

如何从此数据创建简单的条形图,其中第一列沿x轴,并且条的高度应与第二列中的对应值成比例.

直到现在,我尝试了以下方法:

binData <- read.table("binFile")
costBars = ggplot(binData,aes(x=V1,y=V2))
finalPlot2 = costBars + geom_bar()
finalPlot2
Run Code Online (Sandbox Code Playgroud)

但是这些命令会产生以下错误?

stat_bin: binwidth defaulted to range/30. Use …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

在R中操作多个文件

我是R的新手,我正在寻找一个代码来处理我手边的数百个文件.它们是带有几行不需要的文本的.txt文件,后面跟着数据列,看起来像这样:

XXXXX 
XXXXX
XXXXX
Col1 Col2 Col3 Col4 Col5
1 36 37 35 36 
2 34 34 36 37 
. 
. 
1500 34 35 36 35 
Run Code Online (Sandbox Code Playgroud)

我编写了一个代码(下面)来提取单个.txt文件的第1列和第5列的选定行,并希望为我拥有的所有文件执行循环.

data <- read.table(paste("/Users/tan/Desktop/test/01.txt"), skip =264, nrows = 932)
selcol<-c("V1", "V5")
write.table(data[selcol], file="/Users/tan/Desktop/test/01ed.txt", sep="\t")
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,.txt文件现在看起来像这样:

Col1 Col5  
300 34  
. 
. 
700 34  
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我想将.txt文件的所有Col5与第1列中的一个(所有txt文件都相同)组合在一起,这样它看起来像这样:

Col1 Col5a Col5b Col5c Col5d ...
300 34 34 36 37
. 
. 
700 34 34 36 37 
Run Code Online (Sandbox Code Playgroud)

谢谢!黄褐色

r

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

使用r中的条件提取唯一行

我有这样的数据:

x <- matrix(c(2,2,3,3,3,4,4,20,33,2,3,45,6,9,45,454,7,4,6,7,5), nrow = 7, ncol = 3)
Run Code Online (Sandbox Code Playgroud)

在真实数据集中,我有一个包含大量列的巨大矩阵.我想提取相对于第一列(Id)和第三列最小值的唯一行.例如,我希望这个矩阵

y <- matrix(c(2,3,4,20,3,9,45,4,5), nrow = 3, ncol = 3)
Run Code Online (Sandbox Code Playgroud)

我尝试了很多东西,但我想不出来.任何帮助表示赞赏.

谢谢,Zeray

r

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

标签 统计

r ×10

matrix ×2

data-structures ×1

distance ×1

ggplot2 ×1

matlab ×1