小编sta*_*uyz的帖子

使用dplyr基于列值对R中的值求和

我有一个包含以下信息的数据集:

Subject    Value1    Value2    Value3      UniqueNumber
001        1         0         1           3
002        0         1         1           2
003        1         1         1           1
Run Code Online (Sandbox Code Playgroud)

如果UniqueNumber的值> 0,我想将dplyr的值与第1行到UniqueNumber中的每个主题相加并计算均值.因此对于Subject 001,sum = 2并且mean = .67.

total = 0;
average = 0;
for(i in 1:length(Data$Subject)){
   for(j in 1:ncols(Data)){
   if(Data$UniqueNumber[i] > 0){
    total[i] = sum(Data[i,1:j])
    average[i] = mean(Data[i,1:j])
   }
}
Run Code Online (Sandbox Code Playgroud)

编辑:我只想查看"UniqueNumber"列中列出的列数.所以这循环遍历每一行并停在'UniqueNumber'中列出的列.示例:带有Subject 002的第2行应该将"Value1"和"Value2"列中的值相加,而带有Subject 003的第3行应该只对"Value1"列中的值求和.

r dataframe dplyr

9
推荐指数
2
解决办法
2896
查看次数

用于实验室值的 SAS 宏

我正在尝试创建一个 SAS 宏,它将为实验室值生成一个移位表。我有以下数据:

Study         Subject            Lab              Measure             Range            Group           Visit
Study1        001                Lab1             45                  Normal           1               Baseline
Study1        001                Lab1             50                  High             1               Visit2
Study1        001                Lab1             55                  High             1               Visit3
Study1        002                Lab1             40                  Normal           1               Baseline
Study1        002                Lab1             44                  Normal           1               Visit1
Study1        002                Lab1             45                  Normal           1               Visit2
Study1        002                Lab1             46                  Normal           1               Visit3
Study1        002                Lab1             52                  High             1               Visit4
Run Code Online (Sandbox Code Playgroud)

我想创建以下输出:

                                                             Final Lab Value
 Parameter         Group              Baseline Value           Low        Normal      High      Missing

 Lab1              Study …
Run Code Online (Sandbox Code Playgroud)

sql sas

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

实施 n-gram 进行下一个单词预测

我正在尝试利用三元组来预测下一个单词。

我已经能够上传语料库并根据频率识别最常见的三元组。我在 R 中使用了“ngrams”、“RWeka”和“tm”包。我按照这个问题寻求指导:

我需要什么算法来查找 n 元语法?

text1<-readLines("MyText.txt", encoding = "UTF-8")
corpus <- Corpus(VectorSource(text1))

BigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 3, max =       3))
tdm <- TermDocumentMatrix(corpus, control = list(tokenize =      BigramTokenizer)) 
Run Code Online (Sandbox Code Playgroud)

如果用户要输入一组单词,我将如何生成下一个单词?例如,如果用户输入“can of”,我将如何检索三个最可能的单词(例如啤酒、苏打水、油漆等)?

text nlp r n-gram

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

回归模型点估计

我想根据参数值列表来检索二阶多项式回归线的值。

这是模型:

fit <- lm(y ~ poly(age, 2) + height + age*height)
Run Code Online (Sandbox Code Playgroud)

我想使用年龄值列表,并在回归线上检索值,以及标准偏差和标准误差。“年龄”是一个连续变量,但我想创建一个离散值数组并从回归线返回预测值。

例:

age <- c(10, 11, 12, 13, 14)
Run Code Online (Sandbox Code Playgroud)

statistics regression r lm

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

转置数据框

我正在尝试在 R 中转置数据帧,但运气不佳。

数据框包含一个表观遗传数据集,第一列中有 300,000 多个 CpG 位点。74 个额外的列被分成对照组和实验组(癌症 = 69,正常 = 5)。

我已将数据框转换为矩阵,以便可以转置数据并将其转换回数值。但是,每次我尝试将数据转换回数据框时,它最终都会变成一个列表。

我正在尝试执行以下操作:

  1. 将第一列设为标题。
  2. 将标题的名称设为第一列中的值(我想删除的 X 除外)。

    数据[1:10, 1:10]

        X Tumor.33 Normal.01 Tumor.01 Tumor.34 Tumor.35 Tumor.02 Tumor.03
    
    
    cg00000029  0.29224   0.32605  0.58762  0.32397  0.23482  0.24012  0.22941
    
    cg00000108  0.91243   0.89785  0.92337  0.90080  0.91220  0.92256  0.92709
    
    cg00000109  0.77676   0.73910  0.81545  0.73603  0.76276  0.85808  0.85142
    
    cg00000165  0.34261   0.30960  0.56392  0.32363  0.33980  0.61755  0.70855
    
    cg00000236  0.84688   0.80654  0.84423  0.80935  0.85600  0.87766  0.83509
    
    cg00000289  0.61535   0.60874  0.62496  0.66421  0.60556  0.66824  0.65243
    
    cg00000292  0.72491   0.63333 …
    Run Code Online (Sandbox Code Playgroud)

r genetics

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

R中的元素明智比较

我正在尝试编写一个for循环,该循环将比较两个人之间的值,而不是同一个人。以下数据框包含五个主题的值:

           Value1 
Subject1   0      
Subject2   1      
Subject3   5      
Subject4   6      
Subject5   8      
Run Code Online (Sandbox Code Playgroud)

我编写了一个双循环,该循环根据以下条件创建“ Value2”变量:

  1. 如果对象具有较大的Value1,则结果为+1。
  2. 如果主题具有相等的Value1,则结果为0。
  3. 如果对象的Value1较小,则结果为-1。

例如,主题1的Value1小于其他四个主题;这应该导致-4。到目前为止,我编写的循环适用于第一个主题,但无法迭代到第二个主题。

Value2<-0
i = 0
w = 0

for(i in 1:length(Value1)){
    for(j in 1:length(Value1)){
        if(i != j){
            Value1[i] = w
            if(w > Value1[j]){
                Value2[i] = Value2[i] + 1
            }    
            if(w < Value1[j]){
                Value2[i] = Value2[i] - 1
            } 
            if(w == Value1[j]){
                Value2[i] = Value2[i] + 0
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

arrays loops r

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

使用 R 进行复杂表分析

我有以下数据:

Group           Subject           Lab               LabValue          Visit         Baseline    Count
1               001               Lab1              10                Day 1         Y           1
1               001               Lab1              11                Day 2                     2
1               001               Lab1              12                Day 30                    3
1               002               Lab1              11                Day 1         Y           1
1               002               Lab1              12                Day 30                    2
2               005               Lab1               9                Day 1         Y           1
2               005               Lab1              16                Day 2                     2
2               005               Lab1              11                Month 1                   3
2               006               Lab1              18                Day 1         Y           1
2               006               Lab1              10                Day …
Run Code Online (Sandbox Code Playgroud)

datatable r dplyr

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

类似GREP的函数,用于检索SAS中的文本

我想检索SAS文件中列中的特定文本.

该文件将如下所示:

Patient    Location    infoTxt
001        B           Admission Code: 123456 X
                       Exit Code: 98765W
002        C           Admission Code: 4567 WY
                       Exit Code: 76543Z
003        D           Admission Code: 67890 L
                       Exit Code: 4321Z
Run Code Online (Sandbox Code Playgroud)

我想只检索排序代码和退出代码的冒号之后的信息,并将它们放在各自的列中."代码"可以是字母,数字和空格的任意组合.新数据如下所示:

Patient    Location    AdmissionCode      ExitCode
001        B           123456 X            8765W
002        C           4567 WY             76543Z
003        D           67890 L             4321Z
Run Code Online (Sandbox Code Playgroud)

我不熟悉SAS中的功能,但逻辑可能如下所示:

data want;
  set have;
  do i = 1 to dim(infoTxt)

    AdmissionCode = substring(string1, regexpr(":", string) + 1);
    ExitCode = substring(string2, regexpr(":", string) + 1);

run;
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,string1表示infoTxt中的第一行文本,string2表示第二行文本infoTxt.

string substring sas

3
推荐指数
2
解决办法
347
查看次数

如何编写没有循环的程序

我试图在没有任何for或while循环的情况下编写以下程序:

function [B] = check(A, k)
B = [];
[nrow ncol] = size(A);
for i = 1:nrow
     for j = 1:ncol
         if mod(A(i,j),k) == 0
             B = [B;A(i,j)];
         else
             B = [B;A(i,j)*k];
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

基本上,该程序检查矩阵A中的元素是否可被元素k整除.如果A(i,j)可被k整除,则A(i,j)处的元素将被置于矩阵B中.如果A(i,j)不能被k整除,那么A(i,i, j)将乘以k并放在矩阵B中.

math matlab for-loop function while-loop

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

使用COALESCE功能合并SAS行

我想在SAS中组合以下行.这是数据:

StudentNumber   Test1   Test2   Test3
001             .       86      .
001             94      .       .
001             .       .       75
002             68      .       .
002             .       82      .
002             .       .       97
Run Code Online (Sandbox Code Playgroud)

我希望行看起来如下所示:

StudentNumber   Test1   Test2   Test3
001             94      86      75
002             68      82      97
Run Code Online (Sandbox Code Playgroud)

我习惯于将列与COALESCE函数合并,但我不确定如何使用行来执行此操作.

coalesce sas

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

R中按列的复杂元素比较

我想按两个列条目比较主题:“值”和“长度”。将该主题与数据框中的所有其他主题进行比较;他们将为“长度”列中值较高的每个主题获得-1。如果“长度”列中的条目的值较高,则它们将获得+1。如果它们的值等于“长度”(Length)列中另一个主题的值,则将比较“值”(Value)列中的值(如果条目更大,则为+1;如果值相等,则为0;如果值等于-1,则为-1。减)。新列“ Value2”中的条目将是来自比较的+1、0或-1值的总和。

我已经在R底下写了一些东西,但是似乎没有用。

             Value        Length
Subject1     2            0
Subject2     0            1
Subject3     5            1
Subject4     4            5
Subject5     4            5
Subject6     7            6
Subject7     9            8


for(i in 1:length(x)){
   for(j in 1:length(x)){
      if(i != j){
         w = z[c(-i), ]
         if(w$length[i] < w$length[j]){ value2[i] = value2[i] -1   }

         if(w$length[i] > w$length[j]){ value2[i] = value2[i} + 1  }

         if(w$length[i] == w$length[j]){
            if(w$value[i] < w$value[j]){ value2[i] = value2[i] - 1 }
            if(w$value[i] > w$value[j]){ value2[i] = value2[i] + 1 }

            if(w$value[i] == w$value[j]){ …
Run Code Online (Sandbox Code Playgroud)

arrays loops r

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

R中所有NA的最后一次观察结转(LOCF)

我想用 R 中的最后观察结转 (LOCF) 方法替换所有 NA 值。我拥有的数据集如下:

Value1        Value2           Value3          Group
100           56               82              Group1
150           NA               97              Group2
NA            66               NA              Group3
120           NA               NA              Group4
Run Code Online (Sandbox Code Playgroud)

我想创建以下数据集:

Value1        Value2           Value3          Group
100           56               82              Group1
150           56               97              Group2
150           66               97              Group3
120           66               97              Group4
Run Code Online (Sandbox Code Playgroud)

任何有关如何做到这一点的见解将不胜感激。

r dataframe dplyr locf

0
推荐指数
2
解决办法
85
查看次数