小编Ada*_*dam的帖子

R 中应用函数中的边距参数

这个问题更多地是关于 apply 函数中的 MARGIN 参数而不是任何东西。假设我想将以下矩阵乘以以下向量,以便我将第一个矩阵元素乘以第一个向量元素,第二个乘以第二个,依此类推。我使用以下代码:

matrix <- matrix(1:10)
vector <- c(10:19)
t(apply(matrix,2,'*',vector))
Run Code Online (Sandbox Code Playgroud)

返回一个非常干净的结果:

      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]   10   22   36   52   70   90  112  136  162   190
Run Code Online (Sandbox Code Playgroud)

但是如果我改变 MARGIN = 2,我会得到这个结果:

matrix <- matrix(1:10)
vector <- c(10:19)
t(apply(matrix,1,'*',vector))

       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]   10   11   12   13   14   15   16   17   18    19
 [2,]   20   22   24   26   28   30   32   34   36    38
 [3,]   30   33 …
Run Code Online (Sandbox Code Playgroud)

r margin multiplication apply

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

将行除以它们在 R 中的总和

我有以下示例数据集:

Example<-data.frame(A=10*1:9,B=10*10:18)

rownames(Example)<-paste("Sample",1:9)
> Example
          A   B
Sample 1 10 100
Sample 2 20 110
Sample 3 30 120
Sample 4 40 130
Sample 5 50 140
Sample 6 60 150
Sample 7 70 160
Sample 8 80 170
Sample 9 90 180
Run Code Online (Sandbox Code Playgroud)

我试图将两列中的每个元素除以其列的总数。我尝试了多种方法,但我觉得我缺少一个可以使这更容易的基本代码。我已经走了这么远:

ExampleSum1 <- sum(Example[,1])
ExampleSum2 <- sum(Example[,2])
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将 10、20、30 等除以ExampleSum1等。

r arithmetic-expressions

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

返回单词的前n个字母

现在我在R中有以下代码行:

counts = table(unlist(dataTable[, grep('column', names(dataTable))]))
Run Code Online (Sandbox Code Playgroud)

并有一个类似于这个的数据表:

print(dataTable)

 column_1   column_2   column_3
  ball.3     ball.3     ball.3
  NA         ball.1     ball.1
  ball.3     NA         ball.2
  NA         NA         NA      
  ball.2     ball.2     ball.1
  ball.1     NA         ball.1
  disk.1     disk.2     NA
  disk.2     disk.2     disk.3
  disk.2     disk.1     NA
Run Code Online (Sandbox Code Playgroud)

这段代码目前将提取"ball.1","ball.2","ball.3","disk.1","disk.2"和"disk.3"的所有实例,并将它们放入表格如下:

print(counts)

ball.1       ball.2      ball.3      disk.1      disk.2      disk.3
   5            3           4          2           4           1
Run Code Online (Sandbox Code Playgroud)

现在,我试图找到一种方法让grep只查找世界中的前n个字母并将该计数分配给一个类别.例如,在这个数据集中,我不太关心ball.1对ball.2对ball.3,但更愿意只计算单词以"ball"开头的次数或"磁盘",忽略了前n = 4个字母之后的任何内容.

最好是以一种我可以专注于寻找任何单词的前四个字母的方式工作,这样我就会有一个如下所示的数据表:

ball         disk
 12           7 
Run Code Online (Sandbox Code Playgroud)

我的推理:

我处理包含许多长物种名称的非常​​大的数据集.有时候,有人可能会在一个单词的后面附上一个数字,或者在某处留下/添加一个字母.如果我可以缩小我的代码的搜索参数以仅搜索名称中的前n个字母,我将消除必须通过.csv文件并仔细检查1000多行名称以进行拼写.我已经找到了解决这个问题的方法,但是只用其他语言找到了它们(不幸的是没有用C语言,或者我可以自己装配一些东西)

r

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

如何从具有x个可能组的矩阵中提取平均值

假设我有以下示例数据集:

df1 = 
ID    Group_Type    Units
 1       A           10
 2       A           12
 3       A           17
 4       B            6
 5       B            9
 6       D           23
 7       D           16
 8       D           21
 9       G           40
10       G           31
Run Code Online (Sandbox Code Playgroud)

组类型可能是英语字母表中A和Z之间的任何字母.有没有办法同时检测A,B,D和G组(或任何现有组),然后平均每组的单位,并将整个结果分配给矩阵?我认为它看起来像这样:

      [,1]
[1,]   13
[2,]   7.5
[3,]   20
[4,]   35
Run Code Online (Sandbox Code Playgroud)

([1,] = A,等等...... [,1] =每组平均值)

我知道如何单独完成这些任务,但我不知道如何将它组合成一段易于管理的代码.我最近使用table,unlist和grep来挑选数据框中的单词,但我无法想象过去.

r

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

操作所有拆分数据集

我正在画一个空白 - 我有一组来自数据框的51组分割数据,我想取每组高度的平均值.

print(dataset)
$`1`
ID   Species  Plant   Height 
1      A        1      42.7
2      A        1      32.5

$`2`
ID   Species  Plant   Height 
3      A        2      43.5
4      A        2      54.3
5      A        2      45.7
Run Code Online (Sandbox Code Playgroud)

...

...

...

$`51`
ID   Species  Plant   Height
134     A       51     52.5
135     A       51     61.2 
Run Code Online (Sandbox Code Playgroud)

我知道如何单独运行每个,但是有51个分割部分,这需要我很长时间.

我以为

mean(dataset[,4])
Run Code Online (Sandbox Code Playgroud)

可能有用,但它说我有错误的维数.我现在明白为什么这是不正确的,但我不知道如何平均所有的高度.

r

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