【发布时间】:2018-09-05 04:13:13
【问题描述】:
我是 R 的新手。我有一个 data.frame。开头和结尾分别是这样的:
我想要做的是根据“条形码”列的最后一位数字对该数据框进行子集化。数字从 1 到 16,所以有 16 个组。我想将这 16 人分成 5 组。例如,所有以“1”和“2”结尾的条形码将成为数据帧的一个子集,所有以“3”、“4”和“5”结尾的条形码将进入另一个子集,依此类推。
我使用which() 和endsWith() 函数进行了尝试:
my_frame = data.frame()
character_one = as.character(1)
subset_by_group_one <- my_frame[which(endsWith(my_frame, character_one)),]
但是,我收到以下错误:
Error in endsWith(barcode_subset, character_one) :
non-character object(s)
似乎基于R documentation,endsWith() 函数必须接受一个字符,而不是一个数据框。然而,我想在我的数据框中使用它——或类似的东西——来对其进行子集化。最好的方法是什么?有没有办法将数据框强制转换为字符?我需要使用循环来遍历数据框吗?
【问题讨论】:
-
1,2 第一个数据帧,3,4,5 第二个数据帧,剩下的呢?锄头你确定? 6,7,8,9,10,11,12,13,14.15,16?您如何将其分解为剩余的 3 个数据框?
-
请使用例如
dput或head以纯文本形式提供数据,而不是图像,以便其他用户可以复制/粘贴。 -
问题是
my_frame是一个完整的数据框而不是一列。你可能想要endsWith(my_frame$barcode,...) -
一般来说,学习一些有关数据帧和子集如何在 R 中工作的基础知识,您会受益匪浅。以下是一些建议阅读:adv-r.had.co.nz/Subsetting.html 请不要发布图片您的数据或代码。
-
@Dan Hall,抱歉粘贴图片并感谢您提供链接。我希望明天有时间通读它和下面的 cmets。