我有两个向量:
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)
如何创建我需要的矢量?
我有以下数据框:
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) 我有一个字符串向量:
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"
非常感谢你提前
我有以下数据框:
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) 我有一个以下数据框,代表纵向数据:
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) 我有以下数据框:
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) 我有一个数据帧:
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里做吗
谢谢