【问题标题】:How can I arrange data using R following these conditions?如何按照这些条件使用 R 排列数据?
【发布时间】:2018-02-03 10:14:27
【问题描述】:

我是编程新手。 当我将数据加载到 R 中时,我发现:

>str(g)
data.frame':    253227 obs. of  2 variables:

 $ ID             : int  7896741 7896743 7896745 7896747 7896749 7896751 7896753 7896755 7896757 7896758 ...
 $ gene_assignment: Factor w/ 85855 levels "","---","AB001736 // IGLJ3 /// AB001733 // IGLJ3 /// ENST00000390609 // IGHV3-23 /// X14584 // IGHV3-23 /// BC072419 // "| __truncated__,..: 16002 81923 16018 2 2 2335 2 2392 5497 5497 ...
  1. 如何从 $gene_assignment 中删除两个类别(“”;“---”)?我应该使用什么类型的代码?

  2. “ AB001736 // IGLJ3 /// AB001733 // IGLJ3 /// ENST00000390609 // IGHV3-23 /// X14584 // IGHV3-23 /// BC072419 // "|

此因子包含许多参数,但有些参数很常见,例如 ENST00000390609AB001733。如何删除这些值?

【问题讨论】:

标签: r if-statement subset


【解决方案1】:

我不太确定你在问什么,所以我只能解释你想要做什么。理想情况下我会留下评论,但它告诉我需要 50 多个声誉才能做到这一点。


因此,如果您想用缺失值 (NA) 替换因子变量的两个类别,那么这应该可行:

data.frame$gene_assignment <- ifelse(data.frame$gene_assignment==...,NA,data.frame$gene_assignment)

其中 ... 是变量的目标值或类别,NA 是新值(缺失),其余用于保持所有其他值和类别不变。

显然,可以使用相同的代码来解决您的第二个问题。只需填写目标值(当然每次 1 个)和您要替换它的值。

如果你想要的话,你也可以用这种方式很容易地创建假人:

data.frame$dummy<-ifelse(data.frame$gene_assignment=...,1,0)

如果您想根据特定变量(例如 $gene_assignment)的给定值(例如“---”)从 data.frame 中删除行(按列表方式),则:data.frame[!(data.frame$gene_assignment=="---"),] 或:@987654329 @ 应该可以解决问题。不过,你应该注意你的 NA。


希望这会有所帮助。

如果不是,并且如果我误解了您的问题,请查看您可以采取哪些措施来改进他们编写问题的方式。细节是关键,“可重复的示例”(一些示例性数据)将使您更容易做出回应并为您提供更好的答案(请参阅hereherehere)。

【讨论】:

  • 另外,你应该在提问之前做一些研究,以免你不小心复制现有的问题。看看这个post,还有this
  • @gene:我在这里发表评论是因为它不允许我在您的“答案”下写作(顺便说一句,我将其标记为“不是答案”)。 关于您的问题: 似乎问题发生在您尝试在 R 中加载数据时。确保指定列的正确分隔符(如在 excel 表中使用的那样)。默认情况下,这是“,”,但可以是其他内容。 sep="..." 可以解决问题。运行 ?read.table 以获取有关加载数据的更多信息。另外,对 StackOverflow 做一些研究:有很多人有类似的问题,有很多聪明的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
  • 2021-12-02
  • 2023-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多