从R中的行向量中提取n值
我一直在寻找/思考从数据框中的每一行提取第n个值(例如第2、第5、第7等)的方法 例如,我有以下列:从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季度)的每行中提取/提取第二个值。此外,公式/函数也会忽略每
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))
我们不需要图像,您可以复制-