Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 基于另一列中的数据创建新变量列_R - Fatal编程技术网

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 我开始尝试对数据进行子集划分,但后来我意识到这

我对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,属性