我需要有关R中数据帧操作的一些建议。我正在进行细胞克隆性分析,并且试图将细胞分为扩展或未扩展的克隆。
我的数据框如下:
2
对于克隆性列,我做了一个循环,将计数> = 3的行标识为扩展,而计数<3的行标识为未扩展。
但是,我想做的是将计数<3的行标识为未扩展,但是对于计数> = 3的行,请根据其标识将其标识为Expanded#。
我希望我的最终数据框架如下所示:
10 10 9 9 8 8 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 0
0 10 1 9 2 8 3 7 4 6 5 5 6 4 7 3 8 2 9 1 10 0
我认为我需要运行一个循环,但是我不确定如何修改循环以执行此操作。我当前使用的循环如下:
Cell Ident Count Clonality
C1 A 5 Expanded
C2 B 3 Expanded
C3 A 5 Expanded
C4 C 2 Unexpanded
C5 A 5 Expanded
C6 B 3 Expanded
C7 C 2 Unexpanded
C8 A 5 Expanded
C9 A 5 Expanded
C10 B 3 Expanded
希望有人可以在这里引导我。
答案 0 :(得分:4)
您可以这样做:
library(tidyverse)
df %>%
mutate_if(is.factor, as.character) %>%
mutate(Clonality = if_else(
Clonality == "Expanded",
sprintf("%s %i", Clonality, as.factor(Ident)),
Clonality))
# Cell Ident Count Clonality
#1 C1 A 5 Expanded 1
#2 C2 B 3 Expanded 2
#3 C3 A 5 Expanded 1
#4 C4 C 2 Unexpanded
#5 C5 A 5 Expanded 1
#6 C6 B 3 Expanded 2
#7 C7 C 2 Unexpanded
#8 C8 A 5 Expanded 1
#9 C9 A 5 Expanded 1
#10 C10 B 3 Expanded 2
说明:我们通过添加Clonality
的{{1}}级(这意味着factor
=> 1,Ident
=> 2,来转换A
中的条目等等),并且仅当B
。
或者在基数R中使用Clonality == Expanded
transform
df <- transform(df, Clonality = ifelse(
Clonality == "Expanded",
sprintf("%s %i", Clonality, as.factor(Ident)),
as.character(Clonality)))
df
# Cell Ident Count Clonality
#1 C1 A 5 Expanded 1
#2 C2 B 3 Expanded 2
#3 C3 A 5 Expanded 1
#4 C4 C 2 Unexpanded
#5 C5 A 5 Expanded 1
#6 C6 B 3 Expanded 2
#7 C7 C 2 Unexpanded
#8 C8 A 5 Expanded 1
#9 C9 A 5 Expanded 1
#10 C10 B 3 Expanded 2