小编DSS*_*SSS的帖子

使用所有向量元素的组合粘贴两个向量

我有两个向量:

vars <- c("SR", "PL")
vis <- c(1,2,3)
Run Code Online (Sandbox Code Playgroud)

基于这些向量,我想创建以下向量:

"SR.1"  "SR.2"  "SR.3"  "PL.1"  "PL.2"  "PL.3"
Run Code Online (Sandbox Code Playgroud)

随着paste我有以下结果:

paste(vars, vis, sep=".")
 [1] "SR.1" "PL.2" "SR.3"
Run Code Online (Sandbox Code Playgroud)

如何创建我需要的矢量?

r r-faq

63
推荐指数
6
解决办法
3万
查看次数

Cut()错误 - 'break'不是唯一的

我有以下数据框:

 a         
    ID   a.1    b.1     a.2   b.2
1    1  40.00   100.00  NA    88.89
2    2  100.00  100.00  100   100.00
3    3  50.00   100.00  75    100.00
4    4  66.67   59.38   NA    59.38
5    5  37.50   100.00  NA    100.00
6    6  100.00  100.00  100   100.00
Run Code Online (Sandbox Code Playgroud)

当我将以下代码应用于此数据帧时:

 temp <- do.call(rbind,strsplit(names(df)[-1],".",fixed=TRUE))
 dup.temp <- temp[duplicated(temp[,1]),]

 res <- lapply(dup.temp[,1],function(i) {
 breaks <- c(-Inf,quantile(a[,paste(i,1,sep=".")], na.rm=T),Inf)
 cut(a[,paste(i,2,sep=".")],breaks)
 })
Run Code Online (Sandbox Code Playgroud)

cut()函数给出错误:

 Error in cut.default(a[, paste(i, 2, sep = ".")], breaks) : 
 'breaks' are not unique
Run Code Online (Sandbox Code Playgroud)

但是,相同的代码在类似的数据帧上运行良好:

 varnames<-c("ID", "a.1", "b.1", "c.1", …
Run Code Online (Sandbox Code Playgroud)

r

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

从矢量元素中删除字符

我有一个字符串向量:

str.vect<-c ("abcR.1", "abcL.1", "abcR.2", "abcL.2")

 str.vect
[1] "abcR.1" "abcL.1" "abcR.2" "abcL.2"
Run Code Online (Sandbox Code Playgroud)

如何从每个向量元素的右侧删除第三个字符?

这是期望的结果:

"abc.1" "abc.1" "abc.2" "abc.2"

非常感谢你提前

r

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

重新编码因子水平

我有以下数据框:

forStack
  AGE  BMI time          A         B      ID
 1  59 23.8    0     (0,75]  (4,14.9] 9000099
 2  69 29.8    0 (96.4,100]  (-Inf,0] 9000296
 3  71 22.7    0  (75,89.3]  (4,14.9] 9000622
 4  56 32.4    0     (0,75] (14.9,68] 9000798
 5  72 30.7    0     (0,75] (14.9,68] 9001104
 6  75 23.5    0 (96.4,100]     (0,4] 9001400

dput (forStack)
structure(list(AGE = c(59, 69, 71, 56, 72, 75), BMI = c(23.8, 
29.8, 22.7, 32.4, 30.7, 23.5), time = c(0, 0, 0, 0, 0, 0), A = structure(c(2L, 
5L, …
Run Code Online (Sandbox Code Playgroud)

r

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

从长格式数据框中提取基线值

我有一个以下数据框,代表纵向数据:

 df<-structure(list(ID = c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2), AGE = c(59, 
 59, 59, 59, 59, 69, 69, 69, 69, 69), BMI = c(23.8, 23.8, 23.8, 
 23.8, 23.8, 29.8, 29.8, 29.8, 29.8, 29.8), time = c(0, 1, 3, 
 5, 6, 0, 1, 3, 5, 6), variable = c(5, 6, 1, 6, 2, 3, 2, NA, 10, 
 1)), .Names = c("ID", "AGE", "BMI", "time", "var"), row.names = c(NA, 
 10L), class = "data.frame")

   > df
      ID AGE  BMI …
Run Code Online (Sandbox Code Playgroud)

r

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

cut()出错:'x'必须是数字

我有以下数据框:

   newdata.1
      a.0    b.0    c.0   a.1  b.1    c.1   a.3    b.3    c.3
  1  40.00 100.00  77.78  NA  88.89  97.22    NA  80.56 100.00
  2 100.00 100.00 100.00 100 100.00 100.00    NA 100.00 100.00
  3  50.00 100.00  75.00  75 100.00  86.11    NA     NA     NA
  4  66.67  59.38 100.00  NA  59.38 100.00    NA  65.63 100.00
  5  37.50 100.00  69.44  NA 100.00  94.44 41.67  83.33  63.89
  6 100.00 100.00  91.67 100 100.00  94.44 75.00 100.00  91.67

 dput(newdata.1) 

 structure(list(a.0 = c(40, 100, 50, 66.67, 37.5, 100), …
Run Code Online (Sandbox Code Playgroud)

r

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

使用cut - 获取缺失值将数据分成分位数

我有一个数据帧:

a <- matrix(c(1,2,3,4), 2,2)
colnames(a) <- c("a", "b")
df <- as.data.frame(a)

> df
  a b
1 1 3
2 2 4
Run Code Online (Sandbox Code Playgroud)

首先,我计算"a"列的四分之一:

> quantile (df$a)
  0%  25%  50%  75% 100% 
1.00 1.25 1.50 1.75 2.00 
Run Code Online (Sandbox Code Playgroud)

然后,我想使用列"a"中的四分位对列"b"进行分类:

> cat.b<-cut(df$b, quantile (df$a,))
> cat.b  
[1] <NA> <NA>  
Levels: (1,1.25] (1.25,1.5] (1.5,1.75] (1.75,2]
Run Code Online (Sandbox Code Playgroud)

如您所见,R为两个"b"值提供NA,因为它们高于"a"的最高四分位数.

但是,我希望生成的"cat.b"向量看起来像:

> cat.b
[1]
">2"    ">2"  
Run Code Online (Sandbox Code Playgroud)

你能告诉我怎么在R里做吗

谢谢

r

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

标签 统计

r ×7

r-faq ×1