R 基于另一列中的数据创建新变量列
我对R和编程都很陌生,我想知道循环一列的最佳方式,这样我可以在数据框中添加一列,进一步描述我循环的观察结果 我现在有一个氨基酸列表,以及它们在蛋白质上的位置,如下所示:R 基于另一列中的数据创建新变量列,r,R,我对R和编程都很陌生,我想知道循环一列的最佳方式,这样我可以在数据框中添加一列,进一步描述我循环的观察结果 我现在有一个氨基酸列表,以及它们在蛋白质上的位置,如下所示: Residue Position H 1 R 2 K 3 D 4 E 5 H 6 R 7 K 8 D 9 E 10 我想要这样的东西(其中H、R和K是碱性氨基酸,d和E是酸性氨基酸): 我真的不知道从哪里开始,我很难找到一个好的资源来解决R 我开始尝试对数据进行子集划分,但后来我意识到这
Residue Position
H 1
R 2
K 3
D 4
E 5
H 6
R 7
K 8
D 9
E 10
我想要这样的东西(其中H、R和K是碱性氨基酸,d和E是酸性氨基酸):
我真的不知道从哪里开始,我很难找到一个好的资源来解决R
我开始尝试对数据进行子集划分,但后来我意识到这样做行不通:
Basic
h.dat <- subset(all, all$Residue == "H")
r.dat <- subset(all, all$Residue == "R")
k.dat <- subset(all, all$Residue == "K")
Acidic
d.dat <- subset(all, all$Residue == "D")
e.dat <- subset(all, all$Residue == "E")
您可以使用
ifelse
。如果df
是原始数据的名称
df$Property <- ifelse(df$Residue %in% c("H", "R", "K"), "Basic", "Acidic")
df
# Residue Position Property
# 1 H 1 Basic
# 2 R 2 Basic
# 3 K 3 Basic
# 4 D 4 Acidic
# 5 E 5 Acidic
# 6 H 6 Basic
# 7 R 7 Basic
# 8 K 8 Basic
# 9 D 9 Acidic
# 10 E 10 Acidic
df$Property您可以使用ifelse
。如果df
是原始数据的名称
df$Property <- ifelse(df$Residue %in% c("H", "R", "K"), "Basic", "Acidic")
df
# Residue Position Property
# 1 H 1 Basic
# 2 R 2 Basic
# 3 K 3 Basic
# 4 D 4 Acidic
# 5 E 5 Acidic
# 6 H 6 Basic
# 7 R 7 Basic
# 8 K 8 Basic
# 9 D 9 Acidic
# 10 E 10 Acidic
df$Property试试:
创建参考表:
> df2
Residue Property
1 H Basic
2 R Basic
3 K Basic
4 D Acidic
5 E Acidic
然后合并:
> merge(df1, df2)
Residue Position Property
1 D 9 Acidic
2 D 4 Acidic
3 E 5 Acidic
4 E 10 Acidic
5 H 1 Basic
6 H 6 Basic
7 K 8 Basic
8 K 3 Basic
9 R 7 Basic
10 R 2 Basic
尝试:
创建参考表:
> df2
Residue Property
1 H Basic
2 R Basic
3 K Basic
4 D Acidic
5 E Acidic
然后合并:
> merge(df1, df2)
Residue Position Property
1 D 9 Acidic
2 D 4 Acidic
3 E 5 Acidic
4 E 10 Acidic
5 H 1 Basic
6 H 6 Basic
7 K 8 Basic
8 K 3 Basic
9 R 7 Basic
10 R 2 Basic
我想你可能也想考虑非极性氨基酸:
c(rep("Basic",3),rep("Acidic",2),"Non-Polar")[ # those are the choices
match(dat$Residue, c("H","R","K","E","D"), nomatch=6) ] #select indices
所以我添加了第11个名为“Z”的残基并进行了测试:
> dat$Property <- c(rep("Basic",3),rep("Acidic",2),"Non-Polar")[
match(dat$Residue, c("H","R","K","E","D"), nomatch=6) ]
> dat
Residue Position Property
1 H 1 Basic
2 R 2 Basic
3 K 3 Basic
4 D 4 Acidic
5 E 5 Acidic
6 H 6 Basic
7 R 7 Basic
8 K 8 Basic
9 D 9 Acidic
10 E 10 Acidic
11 Z 11 Non-Polar
>dat$Property dat
剩余位置性质
1小时1基本
2 R 2基本
3K3基本
4d4酸性
5 E 5酸性
6小时6基本
7 R 7基本
8K8基本
9d9酸性
10 E 10酸性
11 Z 11非极性
我认为您可能还需要考虑非极性氨基酸:
c(rep("Basic",3),rep("Acidic",2),"Non-Polar")[ # those are the choices
match(dat$Residue, c("H","R","K","E","D"), nomatch=6) ] #select indices
所以我添加了第11个名为“Z”的残基并进行了测试:
> dat$Property <- c(rep("Basic",3),rep("Acidic",2),"Non-Polar")[
match(dat$Residue, c("H","R","K","E","D"), nomatch=6) ]
> dat
Residue Position Property
1 H 1 Basic
2 R 2 Basic
3 K 3 Basic
4 D 4 Acidic
5 E 5 Acidic
6 H 6 Basic
7 R 7 Basic
8 K 8 Basic
9 D 9 Acidic
10 E 10 Acidic
11 Z 11 Non-Polar
>dat$Property dat
剩余位置性质
1小时1基本
2 R 2基本
3K3基本
4d4酸性
5 E 5酸性
6小时6基本
7 R 7基本
8K8基本
9d9酸性
10 E 10酸性
11 Z 11非极性
+1另一个选项是内(df,属性+1另一个选项是内(df,属性