从R中的行向量中提取n值

从R中的行向量中提取n值,r,R,我一直在寻找/思考从数据框中的每一行提取第n个值(例如第2、第5、第7等)的方法 例如,我有以下列: ID 2013年第1季度2013年第2季度2013年第3季度2013年第4季度2014年第1季度2014年第2季度2014年第3季度2014年第4季度 每列下都有给定的值。我想做的是从四分之一向量(第2-8列)中提取每行的第n个值。例如,如果我要从每行中寻找第二个值,我想要的公式/函数将从第2-8列(2013年第1季度至2014年第4季度)的每行中提取/提取第二个值。此外,公式/函数也会忽略每

我一直在寻找/思考从数据框中的每一行提取第n个值(例如第2、第5、第7等)的方法

例如,我有以下列:

ID 2013年第1季度2013年第2季度2013年第3季度2013年第4季度2014年第1季度2014年第2季度2014年第3季度2014年第4季度

每列下都有给定的值。我想做的是从四分之一向量(第2-8列)中提取每行的第n个值。例如,如果我要从每行中寻找第二个值,我想要的公式/函数将从第2-8列(2013年第1季度至2014年第4季度)的每行中提取/提取第二个值。此外,公式/函数也会忽略每行中的空格/NA值。

也许这就是您想要的

我首先修改了iris数据集,每列中都有一些NAs:

iris[] <- lapply(iris, function(x){ x[sample(150, 30, F)] <- NA; x})
head(iris)
#  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1          5.1         3.5          1.4          NA  setosa
#2           NA          NA          1.4          NA  setosa
#3           NA          NA          1.3         0.2  setosa
#4          4.6         3.1          1.5          NA  setosa
#5          5.0         3.6          1.4         0.2  setosa
#6          5.4          NA          1.7         0.4  setosa

由于
apply
将首先将数据帧转换为
矩阵
,因此在这种情况下,所有列都被转换为相同的类型,即
字符
。您可以稍后将其转换为您想要的任何格式(但请注意,在本例中,您不能将输出向量直接转换回数值格式,因为它包含一些字符串,如“setosa”等)。

也许这就是您想要的

我首先修改了iris数据集,每列中都有一些NAs:

iris[] <- lapply(iris, function(x){ x[sample(150, 30, F)] <- NA; x})
head(iris)
#  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1          5.1         3.5          1.4          NA  setosa
#2           NA          NA          1.4          NA  setosa
#3           NA          NA          1.3         0.2  setosa
#4          4.6         3.1          1.5          NA  setosa
#5          5.0         3.6          1.4         0.2  setosa
#6          5.4          NA          1.7         0.4  setosa

由于
apply
将首先将数据帧转换为
矩阵
,因此在这种情况下,所有列都被转换为相同的类型,即
字符
。您可以稍后将其转换为您想要的任何格式(但请注意,在本例中,您不能将输出向量直接转换回数值格式,因为它包含一些字符串,如“setosa”等)。

也许这就是您想要的

我首先修改了iris数据集,每列中都有一些NAs:

iris[] <- lapply(iris, function(x){ x[sample(150, 30, F)] <- NA; x})
head(iris)
#  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1          5.1         3.5          1.4          NA  setosa
#2           NA          NA          1.4          NA  setosa
#3           NA          NA          1.3         0.2  setosa
#4          4.6         3.1          1.5          NA  setosa
#5          5.0         3.6          1.4         0.2  setosa
#6          5.4          NA          1.7         0.4  setosa

由于
apply
将首先将数据帧转换为
矩阵
,因此在这种情况下,所有列都被转换为相同的类型,即
字符
。您可以稍后将其转换为您想要的任何格式(但请注意,在本例中,您不能将输出向量直接转换回数值格式,因为它包含一些字符串,如“setosa”等)。

也许这就是您想要的

我首先修改了iris数据集,每列中都有一些NAs:

iris[] <- lapply(iris, function(x){ x[sample(150, 30, F)] <- NA; x})
head(iris)
#  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1          5.1         3.5          1.4          NA  setosa
#2           NA          NA          1.4          NA  setosa
#3           NA          NA          1.3         0.2  setosa
#4          4.6         3.1          1.5          NA  setosa
#5          5.0         3.6          1.4         0.2  setosa
#6          5.4          NA          1.7         0.4  setosa

由于
apply
将首先将数据帧转换为
矩阵
,因此在这种情况下,所有列都被转换为相同的类型,即
字符
。稍后,您可以将其转换为您想要的任何形式(但请注意,在本例中,您不能将输出向量直接转换回数值,因为它包含一些字符串,如“setosa”等)。

您还可以使用
便捷的
函数
naLast
from
库(SOfun)

您还可以通过class='row'

naLast(dat, by='row')[,n] #get the 2nd non-empty/nonNA element for each row
#  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20 
#"G" "D" "B" "G" "E" "B" "J" "F" "F" "A" "H" "C" "A" "D" "H" "D" "J" "C" "A" "A" 
数据
您还可以使用
库(SOfun)

您还可以通过class='row'

naLast(dat, by='row')[,n] #get the 2nd non-empty/nonNA element for each row
#  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20 
#"G" "D" "B" "G" "E" "B" "J" "F" "F" "A" "H" "C" "A" "D" "H" "D" "J" "C" "A" "A" 
数据
您还可以使用
库(SOfun)

您还可以通过class='row'

naLast(dat, by='row')[,n] #get the 2nd non-empty/nonNA element for each row
#  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20 
#"G" "D" "B" "G" "E" "B" "J" "F" "F" "A" "H" "C" "A" "D" "H" "D" "J" "C" "A" "A" 
数据
您还可以使用
库(SOfun)

您还可以通过class='row'

naLast(dat, by='row')[,n] #get the 2nd non-empty/nonNA element for each row
#  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20 
#"G" "D" "B" "G" "E" "B" "J" "F" "F" "A" "H" "C" "A" "D" "H" "D" "J" "C" "A" "A" 
数据

无论如何,我们不需要图像,您可以复制粘贴一个原始数据的小样本2000 5000 2500如果三个值在一行中,我想提取第二个值。看起来第一个问题是数据输入。列标题中有空格和美元符号,值中有逗号。由于这是典型的Excel,您可能想看看在构建CSV文件之前是否可以在这一端清理它。我已经从数据框中删除了逗号(我只是手动将逗号放在这里以使其可读)。也就是说,列标题不应该真正影响公式。我可以简单地使用向量,例如[2:8]来拉动列。现在我只想在这些列的每一行中提取第二个值,然后。。。。如果您已经有一个R数据帧,您应该给我们输出
dput(head(dfrm_name))
我们无论如何都不需要图像,您可以复制粘贴一个原始数据的小样本2000 5000 2500如果三个值在一行中,我想提取第二个值。看起来第一个问题是数据输入。列标题中有空格和美元符号,值中有逗号。由于这是典型的Excel,您可能想看看在构建CSV文件之前是否可以在这一端清理它。我已经从数据框中删除了逗号(我只是手动将逗号放在这里以使其可读)。也就是说,列标题不应该真正影响公式。我可以简单地使用向量,例如[2:8]来拉动列。现在我只想在这些列的每一行中提取第二个值,然后。。。。如果您已经有一个R数据帧,您应该给我们输出
dput(head(dfrm_name))
我们无论如何都不需要图像,您可以复制粘贴一个原始数据的小样本2000 5000 2500如果三个值在一行中,我想提取第二个值。看起来第一个问题是数据输入。列标题中有空格和美元符号,值中有逗号。由于这是典型的Excel,您可能想看看在构建CSV文件之前是否可以在这一端清理它。我已经从数据框中删除了逗号(我只是手动将逗号放在这里以使其可读)。也就是说,列标题不应该真正影响公式。我可以简单地使用向量,例如[2:8]来拉动列。现在我只想在这些列的每一行中提取第二个值,然后。。。。如果您已经有一个R数据帧,您应该给我们输出
dput(head(dfrm_name))
我们不需要图像,您可以复制-