Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中的数据框中创建新列,方法是比较2个现有列,然后删除后者_R_Matrix_Dataframe - Fatal编程技术网

在R中的数据框中创建新列,方法是比较2个现有列,然后删除后者

在R中的数据框中创建新列,方法是比较2个现有列,然后删除后者,r,matrix,dataframe,R,Matrix,Dataframe,我还有一个问题,我在过去几个小时里一直试图解决,但没有成功。它涉及R中的一些数据集操作。假设我有以下示例数据集: a,b,v,r 1,3,1,0 2,5,1,1 3,6,0,1 1,5,1,0 2,4,1,1 3,6,0,1 我需要通过以下规则比较列[v,r]的值来创建第三列(比如m)。如果v=1,r=0,那么m=0。如果v=1,r=1,那么m=1,如果v=0,r=1,那么m=2。[v,r]永远不能取值(0,0) 我想知道如何创建第三列,同时删除一行中的v、r列。谢谢大家! 使用数据。表(1.

我还有一个问题,我在过去几个小时里一直试图解决,但没有成功。它涉及R中的一些数据集操作。假设我有以下示例数据集:

a,b,v,r
1,3,1,0
2,5,1,1
3,6,0,1
1,5,1,0
2,4,1,1
3,6,0,1
我需要通过以下规则比较列[v,r]的值来创建第三列(比如m)。如果v=1,r=0,那么m=0。如果v=1,r=1,那么m=1,如果v=0,r=1,那么m=2。[v,r]永远不能取值(0,0)


我想知道如何创建第三列,同时删除一行中的v、r列。谢谢大家!

使用
数据。表
(1.8.8):

DT它不是一行(因此不像@Arun的
数据表
解决方案那样简洁),但这里有一种方法,其中
如果其他

within(mydf, {
  m <- ifelse(v == 1 & r == 0, 0, ifelse(v == 1 & r == 1, 1, 2))
  rm(v, r)
})
#   a b m
# 1 1 3 0
# 2 2 5 1
# 3 3 6 2
# 4 1 5 0
# 5 2 4 1
# 6 3 6 2
在(mydf{

m使用
转换
base

DF <- read.csv(textConnection("a,b,v,r\n1,3,1,0\n2,5,1,1\n3,6,0,1\n1,5,1,0\n2,4,1,1\n3,6,0,1"), header = TRUE)

transform(DF, m = (!v) * 1 + r, v = NULL, r = NULL)
##   a b m
## 1 1 3 0
## 2 2 5 1
## 3 3 6 2
## 4 1 5 0
## 5 2 4 1
## 6 3 6 2

DF非常好地使用了
(!v)*1+r
!+1来计算v、r和m的关系..我在考虑二进制数行:py我们的解决方案给了我以下错误:错误:意外的“=”在“gbbc1[,
:=
(gbbc1$exp=”中其中gbbc1是数据集的名称,exp是尚不存在的必需列。为什么您使用
gbbc1$exp
而不是
exp
?如果您看到我的帖子,我不会在
dt[]中使用
dt$
。事实上,这解决了我的问题!我完全忽略了这一点。非常感谢!+1,这仍然可以通过在两个语句之间使用
在一行中完成;)这个答案也很好,但我选择了上面的答案,因为在我的大数据集上,它速度更快,并且不会打印出行。感谢您的帮助!
DF <- read.csv(textConnection("a,b,v,r\n1,3,1,0\n2,5,1,1\n3,6,0,1\n1,5,1,0\n2,4,1,1\n3,6,0,1"), header = TRUE)

transform(DF, m = (!v) * 1 + r, v = NULL, r = NULL)
##   a b m
## 1 1 3 0
## 2 2 5 1
## 3 3 6 2
## 4 1 5 0
## 5 2 4 1
## 6 3 6 2