R创建满足条件的变量

时间:2016-04-10 04:41:28

标签: r

向任何人寻求帮助。

我有一个名为h2004的家庭调查数据集,并且想要创建一个等于满足特定条件的另一个变量的变量。我在这里提出了一些观察结果。

cq15      expen
10     0.4616136
10     1.538712
11     2.308068
11     0.384678
12     2.576797822
12     5.5393632
13     5.4624276
14     2.6158104
14     20.157127

我尝试了以下命令:

h2004$crops[h2004$cq15>=12 & h2004$cq15<=14]=h2004$expen 

这会在R中产生错误的结果,因为我知道使用Stata的正确结果。在原始数据集中,即使cq15<12,上述命令也会使用“费用”值,并将对cq15>=12 & cq15<=14的观察值替换为fil<- filter(h2004, cq15>=12 & cq15<=14)

我还尝试使用dplyr的filter选项正确地对数据框进行子集,但不知道如何将其应用于特定变量。

(cq15>=12 & cq15<=14)

我认为我的子集// Ionic Starter App // angular.module is a global place for creating, registering and retrieving Angular modules // 'starter' is the name of this angular module example (also set in a <body> attribute in index.html) // the 2nd parameter is an array of 'requires' var app = angular.module('starter', ['ionic']) .run(function($ionicPlatform) { $ionicPlatform.ready(function() { // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard // for form inputs) if(window.cordova && window.cordova.plugins.Keyboard) { cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); } if(window.StatusBar) { StatusBar.styleDefault(); } }); }) .controller('MediaCtrl', function($scope) { $scope.allImages = [{ 'src' : 'img/pic1.jpg' }, { 'src' : 'img/pic2.jpg' }, { 'src' : 'img/pic3.jpg' }, { 'src' : 'img/pic4.jpg' }, { 'src' : 'img/pic4.jpg' }, { 'src' : 'img/pic5.jpg' }, { 'src' : 'img/pic6.jpg' }, { 'src' : 'img/pic7.jpg' }, { 'src' : 'img/pic8.jpg' }, { 'src' : 'img/pic9.jpg' }, { 'src' : 'img/pic10.jpg' }, { 'src' : 'img/pic11.jpg' }]; });是错误的。请指教。感谢

1 个答案:

答案 0 :(得分:0)

问题在于命令。执行该命令时,将发出以下警告消息:

Warning message:
   In h2004$crops[h2004$cq15 >= 12 & h2004$cq15 <= 14] = h2004$expen :
   number of items to replace is not a multiple of replacement length

这样做的原因是该命令的LHS选择满足条件 h2004 $ cq15&gt; = 12&amp;的元素。 h2004 $ cq15&lt; = 14 在RHS上,给出了完整的向量 h2004 $ expense ,导致长度不匹配。

解决方案:

> h2004$crops[h2004$cq15>=12 & h2004$cq15<=14]=h2004$expen[h2004$cq15>=12 & h2004$cq15<=14]

> h2004
  cq15      expen     crops
1   10  0.4616136        NA
2   10  1.5387120        NA
3   11  2.3080680        NA
4   11  0.3846780        NA
5   12  2.5767978  2.576798
6   12  5.5393632  5.539363
7   13  5.4624276  5.462428
8   14  2.6158104  2.615810
9   14 20.1571270 20.157127

或者另外:

> indices <- which(h2004$cq15>=12 & h2004$cq15<=14)
> h2004$crops[indices] = h2004$expen[indices]
> h2004
  cq15      expen     crops
1   10  0.4616136        NA
2   10  1.5387120        NA
3   11  2.3080680        NA
4   11  0.3846780        NA
5   12  2.5767978  2.576798
6   12  5.5393632  5.539363
7   13  5.4624276  5.462428
8   14  2.6158104  2.615810
9   14 20.1571270 20.157127