在R中子集数据无效

丽莎

我正在尝试对数据进行子集化,对于我的一生,我无法弄清楚为什么它不起作用。这是我的数据的链接,它是一个csv文件Data我尝试了这些方法的子集,但是它们都只是创建了没有观察值的标头。

alveolar.df <- combine.df[combine.df$articulation == "velar_coronal", ]
alveolar.df <- subset(combine.df, articulation == "velar_coronal")
alveolar.df <- combine.df[combine.df$articulation %in% c("velar_coronal"), ]

这是数据示例-

combine.df <- structure(list(start = c(215.76, 278.78, 862.35, 1050.22, 512.59, 
552.97), end = c(217.18, 280.68, 863.85, 1051.72, 515.02, 555.67
), articulation = c(" velar_coronal", " velar_labial", " velar_coronal", 
" velar_coronal", " velar_coronal", " velar_coronal"), hometown = structure(c(1L, 
NA, 2L, 3L, 4L, 4L), .Label = c(" Montana ", "  ", " San Leandr ", 
" Southern California "), class = "factor")), .Names = c("start", 
"end", "articulation", "hometown"), row.names = c(NA, 6L), class = "data.frame")
丰富的雕刻

列中有多余的空格,这就是为什么FALSE要从逻辑表达式获取所有结果,因此子集中没有行的原因。请注意下面每个字符串开头的多余空格。

combine.df$articulation
# [1] " velar_coronal" " velar_labial"  " velar_coronal" " velar_coronal"
# [5] " velar_coronal" " velar_coronal"
combine.df$articulation == "velar_coronal"
# [1] FALSE FALSE FALSE FALSE FALSE FALSE

实际上,您在多个专栏中都有此问题。您可以执行以下两项操作之一:

  1. 使用strip.white = TRUE时,您最初将数据读入R(假设你使用read.csv()read.table()

  2. 使用trimws()基数R中的新功能来修剪列中多余的空白

    combine.df$articulation <- trimws(combine.df$articulation) 
    

    然后再次尝试您的代码。

更好的方法是第一种,使用来返回并再次读取数据,strip.white = TRUE因为这将确保任何列中都没有多余的空格。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章