r - 根据另一个单元格的内容将 R 数据框中的数据从一个单元格复制到另一个单元格
问题描述
这是一些示例代码,可以帮助大家理解我在这里尝试做的事情:
ID PicName Rating Correct
1 flower 4
1 Answer 1
2 cat 5
2 Answer 1
我要做的是将“答案”行与它们上方行中的相应数据链接起来,然后删除那些“答案”行。也就是说,我需要将“答案”行上的“正确”列的内容移动到上一行的同一列中的单元格。我对这个问题的直觉最初是尝试索引这些答案行并以这种方式搜索数据框,但我不确定如何实施命令将数据从这些特定单元格中取出并将其移动到其他特定单元格。任何对此问题的见解将不胜感激,谢谢!
解决方案
使用data.table
包你可以遍历每一个ID
,选择 and 的第一个值PicName
和Rating
的第二个值Correct
。
library(data.table)
setDT(df) # give df class "data.table"
df[, .( PicName = PicName[1]
, Rating = Rating[1]
, Correct = Correct[2])
, by = ID]
退货
ID PicName Rating Correct
1: 1 flower 4 1
2: 2 cat 5 1
另一种选择是merge
与其他人一起回答行(给出相同的结果)
setkey(df, ID)
merge(df[PicName != 'Answer', -'Correct']
, df[PicName == 'Answer', .(ID, Correct)])
使用的数据:
df <- fread(
"ID PicName Rating Correct
1 flower 4 NA
1 Answer NA 1
2 cat 5 NA
2 Answer NA 1")
====================
如果ID
每组有一对以上,则可以使用以下代码。这会挑选出PicName == 'Answer'
isFALSE
的行,将这些行用于PicName
和Rating
列,然后将其他行用于该Correct
列。
library(data.table)
library(magrittr)
setDT(df) # give df class "data.table"
df[, (PicName == 'Answer')
%>% {.(PicName = PicName[!.]
, Rating = Rating[!.]
, Correct = Correct[.])}
, by = ID]
推荐阅读
- types - 扣脚本方法定义=字符串
- php - 如何在 PHP Slim 3 路由组中使用 Response->withJson?
- swift - UICollectionView 第一个可重复使用的表格单元格未显示
- sqlite - 我没有在日志中打印“姓名”和“年龄”?(最后提到了错误。)
- node.js - TypeORM 存储库查找选项
- javascript - Electron WebAssembly:TypeError:不正确的响应 MIME 类型。预期的“应用程序/wasm”
- angular - 构建 Angular 应用程序时出错
- android - Xamarin Forms 操作栏溢出弹出颜色
- java - Spring boot AOP 忽略使用 @Named 注册的 JAX-RS 资源
- android - Kotlin 对话框 java.lang.IllegalStateException:指定的孩子已经有一个父母。您必须先在孩子的父母上调用 removeView()